home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Library / +ORC / Orc pac 9E / FILEZ.ZIP / INTLST55.ZIP / INTLIST.TXT
Encoding:
Text File  |  1997-09-28  |  5.0 MB  |  138,607 lines

Text Truncated. Only the first 1MB is shown below. Download the file for the complete contents.
  1. Interrupt List            Release 55        Last change 28sep97
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
  3. --------!---FILELIST-------------------------
  4. Please redistribute the following files unmodified as a group, in a quartet of
  5. archives named INTER55A through INTER55D (preferably the original authenticated
  6. PKZIP archives):
  7.     INTERRUP.1ST    the read-me file, containing credits, availability info
  8.     INTERRUP.A    INT 00 through INT 12      \
  9.     INTERRUP.B    INT 13 through INT 15/11   \
  10.     INTERRUP.C    INT 15/12 through INT 16/6E \
  11.     INTERRUP.D    INT 16/6F through INT 1A/AF  \
  12.     INTERRUP.E    INT 1A/B0 through INT 21/2A   \      total 2311 pages at
  13.     INTERRUP.F    INT 21/2B through INT 21/56    \  60 lines per page,
  14.     INTERRUP.G    INT 21/57 through INT 21/E2    \ 2462 with INTPRINT -p
  15.     INTERRUP.H    INT 21/E3 through INT 21/F1     >(8497 entries)
  16.     INTERRUP.I    INT 21/F2 through INT 29    / (3721 tables)
  17.     INTERRUP.J    INT 2A through INT 2F/26       /
  18.     INTERRUP.K    INT 2F/27 through INT 2F/B8   /
  19.     INTERRUP.L    INT 2F/B9 through INT 32     /
  20.     INTERRUP.M    INT 33 through INT 60        /
  21.     INTERRUP.N    INT 61 through INT 66       /
  22.     INTERRUP.O    INT 67 through INT 7D      /
  23.     INTERRUP.P    INT 7E through INT FF     /
  24.     INTERRUP.PRI    a brief introduction to interrupts
  25.     INTPRINT.COM    a simple formatter that also generates a list summary
  26.     INTPRINT.DOC    instructions for INTPRINT
  27.     OVERVIEW.LST    brief listing of major uses of each interrupt
  28.     86BUGS.LST    a listing of CPU bugs and undocumented features
  29.     BIBLIO.LST    bibliography of information sources for the list
  30.     CMOS.LST    a description of the CMOS RAM data bytes
  31.     FARCALL.LST    APIs available through FAR CALLs
  32.     GLOSSARY.LST    a glossary of terms, abbreviations, and acronyms
  33.     MEMORY.LST    format of the BIOS data area
  34.     OPCODES.LST    a listing of recent and undocumented CPU instructions
  35.     PORTS.LST    a listing of I/O ports
  36.     CATEGORY.KEY    descriptions of divider-line category letters
  37.     COMBINE.COM    combine the pieces of the list into a single file
  38.     COMBINE.DOC    documentation for COMBINE
  39. The following files should be distributed in an archive called INTER55E:
  40.     86BUGSnn.ZIP    programs to test for CPU bugs
  41.     COMBINE.ASM    source code for COMBINE.COM
  42.     INT.*        invoke interrupts from commandline
  43.     INTHLP??.ZIP    Interrupt Helper viewer for the interrupt list
  44.     INTLIST.E    Epsilon extension for handling list
  45.     INTPRINT.C    source code for INTPRINT
  46.     INTSUM??.ZIP    interrupt list browser (Interrupt Summary)
  47.     IVIEW*.ZIP    another interrupt list browser
  48. The following should be distributed in an archive called INTER55F:
  49.     INT2RTF.ZIP    Slava Gostrenko's Windows Help converter
  50.     INT2WHLP.ZIP    convert list into Windows Help database
  51.     INTERRUP.ICO    icon for interrupt list
  52.     HINTSRCH.ZIP    WinHelp DLL for full-text searches of interrupt list
  53.     WH_ED*.ZIP    WinHelp-file editor
  54. Finally, the following should be distributed in an archive called INTER55G:
  55.     IL2ME???.ZIP    convert list into Multi-Edit help database
  56.     INT2GUID.*    convert list into TurboPower GUIDE or POPHELP database
  57.     INT2HLP.ZIP    convert list into QuickHelp database
  58.     INT2IPF.ZIP    convert list into OS/2 .IPF database
  59.     INT2QH.*    program to convert list into QuickHelp database
  60.     INT2TPH.ZIP    convert to Turbo/Borland Pascal help file (.TPH)
  61.     INTHELP.*    convert list into TurboPower GUIDE database
  62.     RB2NG???.ZIP    convert list into Norton Guides database
  63. --------!---CONTACT_INFO---------------------
  64. If you notice any mistakes or omissions, please let me know!  It is only with
  65. YOUR help that the list can continue to grow at the current rate.  Please send
  66. all changes to me rather than distributing a modified version of the list.
  67.  
  68. Please read the file INTERRUP.1ST before asking me any questions.  You may find
  69. that they have already been addressed.
  70.  
  71.      Ralf Brown
  72.  
  73. Internet: ralf@pobox.com (currently forwards to ralf@telerama.lm.com)
  74. UUCP: {uunet,harvard}!pobox.com!ralf
  75. FIDO: Ralf Brown 1:129/26.1
  76.     or post a message to me in the DR_DEBUG echo (I probably won't see it
  77.     unless you address it to me)
  78. CIS:  >INTERNET:ralf@pobox.com
  79.  
  80. I reply to all e-mail submissions and inquiries, but some of my replies bounce
  81. because of bad return paths.  If you don't get a response from me within a
  82. reasonable period of time, send it again with a better return path (many
  83. mailers are improperly configured and do not produce a valid From: address).
  84. --------!---Note-----------------------------
  85. See INTERRUP.1ST for the key to system abbreviations and a list of the
  86. trademarks mentioned here.
  87. --------!---DISCLAIMER-----------------------
  88. DISCLAIMER:  THIS MATERIAL IS PROVIDED "AS IS".     I verify the information
  89. contained in this list to the best of my ability, but I cannot be held
  90. responsible for any problems caused by use or misuse of the information,
  91. especially for those functions not officially documented.  If it is marked
  92. "internal" or undocumented, you should check it carefully to make sure it
  93. works the same way in your version of the software (and please let me know
  94. whether or not it works the same way).    Information marked with "???" is
  95. known to be incomplete or guesswork.
  96. --------!---FLAGS----------------------------
  97. The use of -> instead of = signifies that the indicated register or register
  98. pair contains a pointer to the specified item, rather than the item itself.
  99. One or more letters may follow the interrupt number; they have the following
  100. meanings:  U - undocumented function, u - partially documented function,
  101. P - available only in protected mode, R - available only in real or V86 mode,
  102. C - callout or callback (usually hooked rather than called),
  103. O - obsolete (no longer present in current versions)
  104. --------!---CATEGORIES-----------------------
  105. The ninth column of the divider line preceding an entry usually contains a
  106. classification code (the entry has not been classified if that character is
  107. a dash).  The codes currently in use are:
  108.     A - applications, a - access software (screen readers, etc),
  109.     B - BIOS, b - vendor-specific BIOS extensions,
  110.     C - CPU-generated, c - caches/spoolers,
  111.     D - DOS kernel, d - disk I/O enhancements,
  112.     E - DOS extenders, e - electronic mail, F - FAX,
  113.     f - file manipulation, G - debuggers/debugging tools, g - games,
  114.     H - hardware, h - vendor-specific hardware,
  115.     I - IBM workstation/terminal emulators, i - system info/monitoring,
  116.     J - Japanese, j - joke programs,
  117.     K - keyboard enhancers, k - file/disk compression,
  118.     l - shells/command interpreters,
  119.     M - mouse/pointing device, m - memory management,
  120.     N - network, n - non-traditional input devices,
  121.     O - other operating systems,
  122.     P - printer enhancements, p - power management,
  123.     Q - DESQview/TopView and Quarterdeck programs,
  124.     R - remote control/file access, r - runtime support,
  125.     S - serial I/O, s - sound/speech,
  126.     T - DOS-based task switchers/multitaskers, t - TSR libraries
  127.     U - resident utilities, u - emulators,
  128.     V - video, v - virus/antivirus,
  129.     W - MS Windows,
  130.     X - expansion bus BIOSes, x - non-volatile config storage
  131.     y - security, * - reserved (and not otherwise classified)
  132. --------C-00---------------------------------
  133. INT 00 C - CPU-generated - DIVIDE ERROR
  134. Desc:    generated if the divisor of a DIV or IDIV instruction is zero or the
  135.       quotient overflows the result register; DX and AX will be unchanged.
  136. Notes:    on an 8086/8088, the return address points to the following instruction
  137.     on an 80286+, the return address points to the divide instruction
  138.     an 8086/8088 will generate this interrupt if the result of a division
  139.       is 80h (byte) or 8000h (word)
  140. SeeAlso: INT 04
  141. --------G-00---------------------------------
  142. INT 00 - Zenith - ROM DEBUGGER
  143. Desc:    invokes the ROM Debugger when at the BIOS level; equivalent to
  144.       pressing Ctrl-Alt-Ins on booting.
  145. Note:    since DOS revectors INT 00, it is necessary to restore this vector to
  146.       its original ROM BIOS value in order to invoke the debugger once DOS
  147.       loads
  148. SeeAlso: INT 03"Columbia"
  149. --------C-01---------------------------------
  150. INT 01 C - CPU-generated - SINGLE STEP
  151. Desc:    generated after each instruction if TF (trap flag) is set; TF is
  152.       cleared on invoking the single-step interrupt handler
  153. Notes:    interrupts are prioritized such that external interrupts are invoked
  154.       after the INT 01 pushes CS:IP/FLAGS and clears TF, but before the
  155.       first instruction of the handler executes
  156.     used by debuggers for single-instruction execution tracing, such as
  157.       MS-DOS DEBUG's T command
  158. SeeAlso: INT 03"CPU"
  159. --------C-01---------------------------------
  160. INT 01 C - CPU-generated (80386+) - DEBUGGING EXCEPTIONS
  161. Desc:    generated by the CPU on various occurrences which may be of interest
  162.       to a debugger program
  163. Note:    events which may trigger the interrupt:
  164.       Instruction address breakpoint fault - will return to execute inst
  165.       Data address breakpoint trap - will return to following instruction
  166.       General detect fault, debug registers in use
  167.       Task-switch breakpoint trap
  168.       undocumented 386/486 opcode F1h - will return to following instruc
  169. SeeAlso: INT 03"CPU"
  170. --------H-02---------------------------------
  171. INT 02 C - external hardware - NON-MASKABLE INTERRUPT
  172. Desc:    generated by the CPU when the input to the NMI pin is asserted
  173. Notes:    return address points to start of interrupted instruction on 80286+
  174.     on the 80286+, further NMIs are disabled until the next IRET
  175.       instruction, but one additional NMI is remembered by the hardware
  176.       and will be serviced after the IRET instruction reenables NMIs
  177.     maskable interrupts may interrupt the NMI handler if interrupts are
  178.       enabled
  179.     although the Intel documentation states that this interrupt is
  180.       typically used for power-failure procedures, it has many other uses
  181.       on IBM-compatible machines:
  182.         Memory parity error: all except Jr, CONV, and some machines
  183.                   without memory parity
  184.         Breakout switch on hardware debuggers
  185.         Coprocessor interrupt: all except Jr and CONV
  186.         Keyboard interrupt: Jr, CONV
  187.         I/O channel check: CONV, PS50+
  188.         Disk-controller power-on request: CONV
  189.         System suspend: CONV
  190.         Real-time clock: CONV
  191.         System watch-dog timer, time-out interrupt: PS50+
  192.         DMA timer time-out interrupt: PS50+
  193.         Low battery: HP 95LX
  194.         Module pulled: HP 95LX
  195. --------m-02----SI0714-----------------------
  196. INT 02 U - STB RAPIDMAP.SYS - ???
  197.     SI = 0714h
  198.     ES:DI -> ???
  199. Return: ???
  200. SeeAlso: INT 67/AX=6100h"STB",PORT 00E1h"STB"
  201. --------C-03---------------------------------
  202. INT 03 C - CPU-generated - BREAKPOINT
  203. Desc:    generated by the one-byte breakpoint instruction (opcode CCh)
  204. Notes:    used by debuggers to implement breakpoints, such as MS-DOS DEBUG's G
  205.       command
  206.     also used by Turbo Pascal versions 1,2,3 when {$U+} specified
  207.     return address points to byte following the breakpoint instruction
  208.     called by Novell DOS 7 EMM386 after displaying an exception error
  209.       message (GPF, illegal opcodes, etc.) and before waiting for user
  210.       input
  211.     called by QEMM-386 if the user presses 'I' (undocumented) when prompted
  212.       after an exception error message
  213. SeeAlso: INT 01"CPU"
  214. --------G-03---------------------------------
  215. INT 03 - Columbia PCs (desktop,VP portables) - ROM DEBUGGER
  216. Desc:    invokes the ROM Debugger if INT 03 has not been revectored; equivalent
  217.       to pressing Esc on booting.
  218. SeeAlso: INT 00"Zenith",INT 03"Realia"
  219. --------G-03---------------------------------
  220. INT 03 - Realia COBOL - DEBUGGER SUPPORT
  221. Note:    Realia COBOL checks for a signature eight bytes prior to the interrupt
  222.       handler when it starts up
  223. BUG:    if the offset of the INT 03 vector is less than 8, the compiler and
  224.       all executables generated by it will crash the system
  225. SeeAlso: INT 03"Columbia"
  226. --------G-03---------------------------------
  227. INT 03 U - Watcom WVIDEO, Watcom WD - OUTPUT DEBUGGING MESSAGE
  228.     STACK:    DWORD    selector
  229.         DWORD    offset of ASCIZ message to display
  230. Notes:    the INT 03h instruction which invokes the debugger must be followed by
  231.       a JMP SHORT and the signature string "WVIDEO"
  232.     to check whether this interface is available, define a public byte
  233.       variable named ___WD_Present, which the debugger will set to 01h
  234.       before running the program
  235. SeeAlso: AX=0910h
  236. --------U-03---------------------------------
  237. INT 03 - DTown Utilities - POP UP
  238. Program: DTown Software Development's DTown Utilities contains various tools
  239.       which are useful to programmers, such as a memory viewer and
  240.       disassembler
  241. Note:    DTU pops up on INT 03 (if not hooked by a debugger) to allow the
  242.       user to inspect memory or code when the machine crashes; various
  243.       memory managers will invoke INT 03 when displaying a CPU exception
  244.       error message (either automatically or when the user presses a
  245.       particular key)
  246. SeeAlso: INT 2D/AL=20h"DTown"
  247. --------G-030910-----------------------------
  248. INT 03 - Soft-ICE - BACK DOOR COMMANDS - DISPLAY STRING IN Soft-ICE WINDOW
  249.     AX = 0910h
  250.     SI = magic value 4647h ('FG')
  251.     DI = magic value 4A4Dh ('JM')
  252.     DS:DX -> ASCIZ string to display (max 100 bytes, 0Dh OK)
  253. Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
  254. SeeAlso: INT 03"WVIDEO"
  255. --------G-030911-----------------------------
  256. INT 03 - Soft-ICE - BACK DOOR COMMANDS - EXECUTE Soft-ICE COMMAND
  257.     AX = 0911h
  258.     SI = magic value 4647h ('FG')
  259.     DI = magic value 4A4Dh ('JM')
  260.     DS:DX -> ASCIZ command string (max 100 bytes, 0Dh OK)
  261. Return: nothing
  262. SeeAlso: AX=0912h,AX=0913h
  263. --------G-030912-----------------------------
  264. INT 03 - Soft-ICE - BACK DOOR COMMANDS - GET BREAKPOINT INFORMATION
  265.     AX = 0912h
  266.     SI = magic value 4647h ('FG')
  267.     DI = magic value 4A4Dh ('JM')
  268. Return: BH = entry number of last breakpoint set
  269.     BL = type of last breakpoint set (see #0001)
  270.     DH = entry number of last breakpoint to be triggered
  271.     DL = type of last triggered breakpoint (see #0001)
  272. Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
  273. SeeAlso: AX=0911h,AX=0913h,AX=0914h
  274.  
  275. (Table 0001)
  276. Values for Soft-ICE breakpoint type:
  277.  00h    BPM (breakpoint register types)
  278.  01h    I/O
  279.  02h    INTerrupt
  280.  03h    BPX (INT 03-style breakpoint)
  281.  04h    reserved
  282.  05h    range
  283. --------G-030913-----------------------------
  284. INT 03 - Soft-ICE v2.5x - BACK DOOR COMMANDS - SET Soft-ICE BREAKPOINT
  285.     AX = 0913h
  286.     SI = magic value 4647h ('FG')
  287.     DI = magic value 4A4Dh ('JM')
  288.     DS:DX -> breakpoint structure (see #0002)
  289. Return: AX = status
  290.         00h successful
  291.         BX = breakpoint number
  292.         03h breakpoint table full
  293.         06h memory limit error
  294.         07h I/O limit error
  295.         09h range limit error
  296.         16h duplicate breakpoint
  297. SeeAlso: AX=0911h,AX=0912h,AX=0914h
  298.  
  299. Format of Soft-ICE breakpoint structure:
  300. Offset    Size    Description    (Table 0002)
  301.  00h    BYTE    breakpoint type (see #0003)
  302.  01h    DWORD    breakpoint address 1
  303.         (lower range limit for memory BPs,
  304.         interrupt number for interrupt BPs,
  305.         address of BP for execution BPs,
  306.         I/O address (only word)    for I/O BPs)
  307.  05h    DWORD    breakpoint address 2
  308.         (upper range limit for memory BPs,
  309.         optional value to check for for interrupt BPs,
  310.         overlay number (0 = root) for execution BPs)
  311.  09h    DWORD    breakpoint address 3
  312.  0Dh    BYTE    breakpoint mode 1 (see #0004)
  313.         (for interrupt BPs = register to check
  314.             00h     no value checking
  315.             01h     check AL
  316.             02h     check AH
  317.             03h     check AX)
  318.  0Eh    BYTE    breakpoint mode 2 (see #0004)
  319.  0Fh    BYTE    breakpoint size (00h byte, 01h word, 03h dword)
  320.  10h    BYTE    breakpoint pass count before program stop
  321.  11h    BYTE    breakpoint state
  322. Note:    all unused fields should contain zeros
  323.  
  324. (Table 0003)
  325. Values for Soft-ICE breakpoint type:
  326.  00h    memory location
  327.  01h    memory range
  328.  03h    I/O
  329.  04h    interrupt
  330.  05h    execution break
  331.  
  332. (Table 0004)
  333. Values for Soft-ICE breakpoint mode:
  334.  01h    read
  335.  02h    write
  336.  04h    execution
  337. --------G-030914-----------------------------
  338. INT 03 - Soft-ICE v2.5x - BACK DOOR COMMANDS - REMOVE Soft-ICE BREAKPOINT
  339.     AX = 0914h
  340.     SI = magic value 4647h ('FG')
  341.     DI = magic value 4A4Dh ('JM')
  342.     BX = breakpoint number (returned by AX=0913h)
  343. Return: BX = ???
  344. Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
  345. SeeAlso: AX=0912h,AX=0913h
  346. --------C-04---------------------------------
  347. INT 04 C - CPU-generated - INTO DETECTED OVERFLOW
  348. Desc:    the INTO instruction will generate this interrupt if OF (Overflow Flag)
  349.       is set; otherwise, INTO is effectively a NOP
  350. Note:    may be used for convenient overflow testing (to prevent errors from
  351.       propagating) instead of JO or a JNO/JMP combination
  352. SeeAlso: INT 00"CPU"
  353. --------B-05---------------------------------
  354. INT 05 - PRINT SCREEN
  355. Desc:    dump the current text screen to the first printer
  356. Notes:    normally invoked by the INT 09 handler when PrtSc key is pressed, but
  357.       may be invoked directly by applications
  358.     byte at 0050h:0000h contains status used by default handler
  359.       00h not active
  360.       01h PrtSc in progress
  361.       FFh last PrtSc encountered error
  362.     default handler is at F000h:FF54h in IBM PC and 100%-compatible BIOSes
  363.     since the BOUND instruction also calls INT 05h, but returns control
  364.       to the BOUND instruction, a failed BOUND check will cause an infinite
  365.       loop of PrtScreens unless the INT 05 handler is aware of the problem
  366.       and checks whether the interrupt was invoked by a BOUND instruction
  367. BUG:    some old BIOSes/applications appear to destroy BP on return
  368. SeeAlso: INT 10/AH=12h/BL=20h,INT 4A"Tandy 2000",INT 5E"TI Professional"
  369. SeeAlso: INT 80"Phar Lap"
  370. --------C-05---------------------------------
  371. INT 05 C - CPU-generated (80186+) - BOUND RANGE EXCEEDED
  372. Desc:    generated by BOUND instruction when the value to be tested is less than
  373.       the indicated lower bound or greater than the indicated upper bound.
  374. Note:    returning from this interrupt re-executes the failing BOUND instruction
  375. --------P-05454A-----------------------------
  376. INT 05 U - PSPS v2.01 - EJECT PAGE
  377.     AX = 454Ah ('EJ')
  378. Program: PSPS is shareware PostScript PrintScreen utility by A.N.D.
  379.       Technologies
  380. Note:    sends a ^D to the current printer
  381. SeeAlso: AX=4E57h,AX=5053h,AX=554Eh
  382. --------P-054E57-----------------------------
  383. INT 05 U - PSPS v2.01 - SET PARAMETERS
  384.     AX = 4E57h ('NW')
  385.     ES:SI -> 11-byte buffer containing new settings
  386. Return: buffer filled
  387. SeeAlso: AX=454Ah,AX=5053h,INT 17/AH=63h
  388. --------P-055053-----------------------------
  389. INT 05 U - PSPS v2.01 - GET PARAMETERS
  390.     AX = 5053h ('PS')
  391.     ES:SI -> 11-byte buffer for settings
  392. Return: buffer filled
  393. SeeAlso: AX=4E57h,AX=554Eh,INT 17/AH=64h
  394. --------P-05554E-----------------------------
  395. INT 05 U - PSPS v2.01 - UNINSTALL
  396.     AX = 554Eh ('UN')
  397. Program: PSPS is shareware PostScript PrintScreen utility by A.N.D.
  398.       Technologies
  399. SeeAlso: AX=454Ah,AX=4E57h,INT 17/AH=62h
  400. --------C-06---------------------------------
  401. INT 06 C - CPU-generated (80286+) - INVALID OPCODE
  402. Desc:    this interrupt is generated when the CPU attempts to execute an
  403.       invalid opcode (most protected-mode instructions are considered
  404.       invalid in real mode) or a BOUND, LDS, LES, or LIDT instruction
  405.       which specifies a register rather than a memory address
  406. Notes:    return address points to beginning of invalid instruction
  407.     with proper programming, this interrupt may be used to emulate
  408.       instructions which do not exist; many 386 BIOSes emulate the 80286
  409.       undocumented LOADALL instruction which was removed from the 80386+
  410.     generated by the 80386+ when the LOCK prefix is used with instructions
  411.       other than BTS, BTR, BTC, XCHG, XADD (486), CMPXCHG (486), INC, DEC,
  412.       NOT, NEG, ADD, ADC, SUB, SBB, AND, OR, or XOR, or any instruction
  413.       not accessing memory.
  414. SeeAlso: INT 0C"CPU",INT 0D"CPU"
  415. --------b-06---------------------------------
  416. INT 06 C - HP 95LX - SLEEP/WAKEUP
  417. Desc:    this interrupt is called just before going into light or deep
  418.       (shutdown) sleep and just after returning from light or deep sleep
  419. SeeAlso: INT 0B"HP 95LX",INT 15/AX=4DD4h,INT 15/AH=4Eh
  420. --------V-06---------------------------------
  421. INT 06 U - no-name clone - GRAPHICS CHARACTER TABLE (NOT A VECTOR!)
  422. Desc:    points at graphics data for characters 00h-7Fh of the current font
  423. SeeAlso: INT 43"EGA",INT 44"VIDEO"
  424. --------C-07---------------------------------
  425. INT 07 C - CPU-generated (80286+) - PROCESSOR EXTENSION NOT AVAILABLE
  426. Desc:    this interrupt is automatically called if a coprocessor instruction is
  427.       encountered when no coprocessor is installed
  428. Note:    can be used to emulate a numeric coprocessor in software
  429. SeeAlso: INT 09"CPU"
  430. --------H-08---------------------------------
  431. INT 08 C - IRQ0 - SYSTEM TIMER
  432. Desc:    generated 18.2 times per second by channel 0 of the 8254 system timer,
  433.       this interrupt is used to keep the time-of-day clock updated
  434. Notes:    programs which need to be invoked regularly should use INT 1C unless
  435.       they need to reprogram the timer while still keeping the time-of-day
  436.       clock running at the proper rate
  437.     default handler is at F000h:FEA5h in IBM PC and 100%-compatible BIOSes
  438.     may be masked by setting bit 0 on I/O port 21h
  439. SeeAlso: INT 1C,INT 4A"SYSTEM",INT 50"DESQview",INT 58"DoubleDOS",INT 70"IRQ8"
  440. SeeAlso: INT 78"GO32",INT D8"Screen Thief",MEM 0040h:0040h
  441. --------C-08---------------------------------
  442. INT 08 C - CPU-generated (80286+) - DOUBLE EXCEPTION DETECTED
  443. Desc:    called when multiple exceptions occur on one instruction, or an
  444.       exception occurs in an exception handler
  445. Notes:    called in protected mode if an interrupt above the defined limit of
  446.       the interrupt vector table occurs
  447.     return address points at beginning of instruction with errors or the
  448.       beginning of the instruction which was about to execute when the
  449.       external interrupt caused the exception
  450.     if an exception occurs in the double fault handler, the CPU goes into
  451.       SHUTDOWN mode (which circuitry in the PC/AT converts to a reset);
  452.       this "triple fault" is a faster way of returning to real mode on
  453.       many 80286 machines than the standard keyboard controller reset
  454. --------H-09---------------------------------
  455. INT 09 C - IRQ1 - KEYBOARD DATA READY
  456. Desc:    this interrupt is generated when data is received from the keyboard.
  457.       This is normally a scan code (from either a keypress *or* a key
  458.       release), but may also be an ACK or NAK of a command on AT-class
  459.       keyboards.
  460. Notes:    this IRQ may be masked by setting bit 1 on I/O port 21h
  461.     if the BIOS supports an enhanced (101/102-key) keyboard, it calls
  462.       INT 15/AH=4Fh after reading the scan code (see #0005) from the
  463.       keyboard and before further processing; all further processing uses
  464.       the scan code returned from INT 15/AH=4Fh
  465.     the default interrupt handler is at F000h:E987h in 100%-compatible
  466.       BIOSes
  467.     the interrupt handler performs the following actions for certain
  468.       special keystrokes:
  469.         Ctrl-Break     clear keyboard buffer, place word 0000h in buffer,
  470.              invoke INT 1B, and set flag at 0040h:0071h
  471.         SysReq     invoke INT 15/AH=85h (SysReq is often labeled SysRq)
  472.         Ctrl-Numlock place system in a tight wait loop until next INT 09
  473.         Ctrl-Alt-Del jump to BIOS startup code (either F000h:FFF0h or the
  474.                destination of the jump at that address)
  475.         Shift-PrtSc     invoke INT 05
  476.         Ctrl-Alt-Plus (HP Vectra) enable keyclick
  477.         Ctrl-Alt-Plus (many clones) set clock speed to high
  478.         Ctrl-Alt-Minus (HP Vectra) reduce keyclick volume
  479.         Ctrl-Alt-Minus (many clones) set clock speed to low
  480.         Ctrl-Alt-SysReq (HP Vectra) generate hard reset
  481.         Ctrl-Alt-S    (many clones) run BIOS setup program
  482.         Ctrl-Alt-Esc (many clones) run BIOS setup program
  483.         Ctrl-Alt-Ins (many clones) run BIOS setup program
  484.         Ctrl-Alt-LeftShift-GrayMinus (some clones) turn off system cache
  485.         Ctrl-Alt-LeftShift-GrayPlus (some clones) turn on system cache
  486.     DR DOS hooks this interrupt to control the cursor shape (underscore/
  487.       half block) for overwrite/insert mode
  488.     DR Multiuser DOS hooks this interrupt for cursor shape control and to
  489.       control whether Ctrl-Alt-Del reboots the current session or the
  490.       entire system
  491. SeeAlso: INT 05"PRINT SCREEN",INT 0B"HP 95LX",INT 15/AH=4Fh,INT 15/AH=85h
  492. SeeAlso: INT 16/AH=00h,INT 16/AH=10h,INT 1B,INT 2F/AX=A901h,INT 4A/AH=00h"TI"
  493. SeeAlso: INT 51"DESQview",INT 59"DoubleDOS",INT 79"GO32"
  494.  
  495. (Table 0005)
  496. Values for keyboard make/break (scan) code:
  497.  01h    Esc         31h    N
  498.  02h    1 !         32h    M
  499.  03h    2 @         33h    , <         63h    F16
  500.  04h    3 #         34h    . >         64h    F17
  501.  05h    4 $         35h    / ?         65h    F18
  502.  06h    5 %         36h    Right Shift     66h    F19
  503.  07h    6 ^         37h    Grey*         67h    F20
  504.  08h    7 &         38h    Alt         68h    F21 (Fn) [*]
  505.  09h    8 *         39h    SpaceBar     69h    F22
  506.  0Ah    9 (         3Ah    CapsLock     6Ah    F23
  507.  0Bh    0 )         3Bh    F1         6Bh    F24
  508.  0Ch    - _         3Ch    F2         6Ch    --
  509.  0Dh    = +         3Dh    F3         6Dh    EraseEOF
  510.  0Eh    Backspace     3Eh    F4
  511.  0Fh    Tab         3Fh    F5         6Fh    Copy/Play
  512.  10h    Q         40h    F6
  513.  11h    W         41h    F7
  514.  12h    E         42h    F8         72h    CrSel
  515.  13h    R         43h    F9         73h    <delta> [*]
  516.  14h    T         44h    F10         74h    ExSel
  517.  15h    Y         45h    NumLock         75h    --
  518.  16h    U         46h    ScrollLock     76h    Clear
  519.  17h    I         47h    Home
  520.  18h    O         48h    UpArrow
  521.  19h    P         49h    PgUp
  522.  1Ah    [ {         4Ah    Grey-
  523.  1Bh    ] }         4Bh    LeftArrow
  524.  1Ch    Enter         4Ch    Keypad 5
  525.  1Dh    Ctrl         4Dh    RightArrow
  526.  1Eh    A         4Eh    Grey+
  527.  1Fh    S         4Fh    End
  528.  20h    D         50h    DownArrow
  529.  21h    F         51h    PgDn
  530.  22h    G         52h    Ins
  531.  23h    H         53h    Del
  532.  24h    J         54h    SysReq        ---non-key codes---
  533.  25h    K                     00h    kbd buffer full
  534.  26h    L         56h    left \| (102-key)
  535.  27h    ; :         57h    F11         AAh    self-test complete
  536.  28h    ' "         58h    F12         E0h    prefix code
  537.  29h    ` ~                     E1h    prefix code
  538.  2Ah    Left Shift     5Ah    PA1         EEh    ECHO
  539.  2Bh    \ |         5Bh    F13 (LWin)     F0h    prefix code (key break)
  540.  2Ch    Z         5Ch    F14 (RWin)     FAh    ACK
  541.  2Dh    X         5Dh    F15 (Menu)     FCh    diag failure (MF-kbd)
  542.  2Eh    C                     FDh    diag failure (AT-kbd)
  543.  2Fh    V                     FEh    RESEND
  544.  30h    B                     FFh    kbd error/buffer full
  545. Notes:    scan codes 56h-E1h are only available on the extended (101/102-key)
  546.       keyboard and Host Connected (122-key) keyboard; scan codes 5Bh-5Dh
  547.       are only available on the 122-key keyboard and the Microsoft Natural
  548.       Keyboard; scan codes 5Eh-76h are only available on the 122-key
  549.       keyboard
  550.     in the default configuration, break codes are the make scan codes with
  551.       the high bit set; make codes 60h,61h,70h, etc. are not available
  552.       because the corresponding break codes conflict with prefix codes
  553.       (code 2Ah is available because the self-test result code AAh is only
  554.       sent on keyboard initialization).  An alternate keyboard
  555.       configuration can be enabled on AT and later systems with enhanced
  556.       keyboards, in which break codes are the same as make codes, but
  557.       prefixed with an F0h scan code
  558.     prefix code E0h indicates that the following make/break code is for a
  559.       "gray" duplicate to a key which existed on the original PC keyboard;
  560.       prefix code E1h indicates that the following make code has no
  561.       corresponding break code (currently only the Pause key generates no
  562.       break code)
  563.     the Microsoft Natural Keyboard sends make codes 5Bh, 5Ch, and 5Dh
  564.       (all with an E0h prefix) for the Left Windows, Right Windows, and
  565.       Menu keys on the bottom row
  566.     the German "Cherry G81-3000 SAD/04" keyboard contains contacts for
  567.       four additional keys, which can be made available by a user
  568.       modification; the three new keys located directly below the cursor
  569.       pad's Delete, End, and PgDn keys send make codes 66h-68h (F19-F21);
  570.       the fourth new key, named <delta>, sends make code 73h
  571.     the SysReq key is often labeled SysRq
  572.     the "Accord" ergonomic keyboard with optional touchpad (no other
  573.       identification visible on keyboard or in owner's booklet) has an
  574.       additional key above the Grey- key marked with a left-pointing
  575.       triangle and labeled "Fn" in the owner's booklet which returns
  576.       scan codes E0h 68h on make and E0h E8h on break
  577. SeeAlso: #0526 at INT 16/AX=6F07h,#2885 at INT 4A/AH=05h
  578. --------C-09---------------------------------
  579. INT 09 C - CPU-generated (80286,80386) - PROCESSOR EXTENSION PROTECTION ERROR
  580. Desc:    called if the coprocessor attempts to access memory outside a segment
  581.       boundary; it may occur at an arbitrary time after the coprocessor
  582.       instruction was issued
  583. Notes:    until the condition is cleared or the coprocessor is reset, the only
  584.       coprocessor instruction which may be used is FNINIT; WAIT or other
  585.       coprocessor instructions will cause a deadlock because the
  586.       coprocessor is still busy waiting for data
  587.     for the 486+, a coprocessor protection error generates an INT 0D
  588. SeeAlso: INT 07"CPU"
  589. --------*-09---------------------------------
  590. INT 09 P - internal hardware - RESERVED BY Intel (80486)
  591. Note:    this exception has been moved to INT 0D
  592. SeeAlso: INT 09"CPU",INT 0D
  593. --------H-0A---------------------------------
  594. INT 0A C - IRQ2 - LPT2 (PC), VERTICAL RETRACE INTERRUPT (EGA,VGA)
  595. Notes:    the TOPS and PCnet adapters use this interrupt request line by default
  596.     DOS 3.2 revectors IRQ2 to a stack-switching routine
  597.     on ATs and above, the physical data line for IRQ2 is labeled IRQ9 and
  598.       connects to the slave 8259.  The BIOS redirects the interrupt for
  599.       IRQ9 back here.
  600.     under DESQview, only the INT 15h vector and BASIC segment address (the
  601.       word at 0000h:0510h) may be assumed to be valid for the handler's
  602.       process
  603.     many VGA boards do not implement the vertical retrace interrupt,
  604.       including the IBM VGA Adapter where the traces are either cut or
  605.       removed
  606. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
  607. --------H-0A---------------------------------
  608. INT 0A C - IRQ2 - Tandy 1000-series HARD DISK
  609. Notes:    this interrupt may be masked by setting bit 2 on I/O port 21h
  610.     the Tandy 1000, 1000A, and 1000HD use IRQ2 for the hard disk; the
  611.       1000EX, HX, RLX, RLX-HD, RLX-B, RLX-HD-B use IRQ5 instead; the
  612.       1000RL, RL-HD, SL, SL/2, TL, TL/2, and TL/3 are jumper-selectable
  613.       for either IRQ2 or IRQ5 (default IRQ5); the 1000SX and TX are
  614.       DIP-switch selectable for IRQ2 or IRQ5 (default IRQ2); the RSX and
  615.       RSX-HD use IRQ14.  Tandy systems which use IRQ2 for the hard disk
  616.       interrupt use IRQ5 for vertical retrace.
  617. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71
  618. --------H-0A---------------------------------
  619. INT 0A - IRQ2 - ROLAND MPU MIDI INTERFACE
  620. Note:    newer Roland cards and MIDI interfaces by other manufacturers use
  621.       a jumper-selectable IRQ, but software and hardware generally defaults
  622.       to IRQ2
  623. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
  624. --------C-0A---------------------------------
  625. INT 0A CP - CPU-generated (80286+) - INVALID TASK STATE SEGMENT
  626. Desc:    automatically called during a task switch if the new TSS specified by
  627.       the task gate is invalid for any of the following reasons:
  628.         TSS limit is less than 43 (80286) or 103 (80386/80486)
  629.         LDT selector invalid or segment not present
  630.         null SS selector, or SS selector outside LDT/GDT limit
  631.         stack segment is read-only
  632.         stack segment DPL differs from new CPL, or RPL <> CPL
  633.         CS selector is outside LDT/GDT limit or not code
  634.         non-conforming code segment's DPL differs from CPL
  635.         conforming code segment's DPL > CPL
  636.         DS/ES selectors outside LDT/GDT limit or not readable segments
  637. Note:    the handler must use a task gate in order to have a valid TSS under
  638.       which to execute; it must also reset the busy bit in the new TSS
  639. SeeAlso: INT 0B"CPU"
  640. --------H-0B---------------------------------
  641. INT 0B C - IRQ3 - SERIAL COMMUNICATIONS (COM2)
  642. Desc:    automatically asserted by the UART when COM2 needs attention, if the
  643.       UART has been programmed to generate interrupts
  644. Notes:    the TOPS and PCnet adapters use this interrupt request line as an
  645.       alternate
  646.     on PS/2s, COM2 through COM8 share this interrupt; on many PC's, COM4
  647.       shares this interrupt
  648.     may be masked by setting bit 3 on I/O port 21h
  649. SeeAlso: INT 0C"COM1",INT 53"DESQview",INT 5B"DoubleDOS",INT 7B"GO32"
  650. --------C-0B---------------------------------
  651. INT 0B CP - CPU-generated (80286+) - SEGMENT NOT PRESENT
  652. Desc:    generated when loading a segment register if the segment descriptor
  653.       indicates that the segment is not currently in memory, unless the
  654.       segment is an LDT (see INT 0A"CPU") or stack segment (see
  655.       INT 0C"CPU") needed by a task switch
  656. Note:    may be used to implement virtual memory by loading in segments as they
  657.       are accessed, clearing the "not present" bit after loading
  658. SeeAlso: INT 0A"CPU",INT 0E"CPU"
  659. --------h-0B---------------------------------
  660. INT 0B - HP 95LX - LOW-LEVEL KEYBOARD HANDLER
  661. Desc:    this is the lowest-level keyboard handler on an HP 95LX palmtop
  662. Note:    debounces key, places the keycode in I/O register 60h, and calls INT 09
  663. SeeAlso: INT 09,INT 0D"HP 95LX",INT 15/AX=4DD4h
  664. --------H-0C---------------------------------
  665. INT 0C C - IRQ4 - SERIAL COMMUNICATIONS (COM1)
  666. Desc:    automatically asserted by the UART when COM1 needs attention, if the
  667.       UART has been programmed to generate interrupts
  668. BUG:    this vector is modified but not restored by Direct Access v4.0, and
  669.       may be left dangling by other programs written with the same version
  670.       of compiled BASIC
  671. Notes:    on many PC's, COM3 shares this interrupt
  672.     may be masked by setting bit 4 on I/O port 21h
  673. SeeAlso: INT 0B"COM2",INT 54"DESQview",INT 5C"DoubleDOS",INT 7C"GO32"
  674. --------C-0C---------------------------------
  675. INT 0C C - CPU-generated (80286+) - STACK FAULT
  676. Desc:    this interrupt is generated in protected mode on a stack overflow or
  677.       underflow, or if an inter-level transition or task switch references
  678.       a stack segment marked "not present"; it is generated in real mode
  679.       on accessing a word operand at SS:FFFFh
  680. Note:    the 80286 will shut down in real mode if SP=1 before a push.  On the
  681.       PC AT and compatibles, external circuitry generates a reset on
  682.       shutdown.
  683. SeeAlso: INT 0B"CPU",INT 0D"CPU"
  684. --------I-0C---------------------------------
  685. INT 0C - IBM SYSTEM 36/38 WORKSTATION EMULATION - API POINTER
  686. Desc:    the IBM System 36/38 emulator may be invoked through a private API,
  687.       whose entry point address (see #0006) is offset 100h in the segment
  688.       pointed at by this vector
  689.  
  690. (Table 0006)
  691. Call the System 36/38 emulator API entry point with:
  692.     AH = function
  693.         03h update screen
  694.         05h select next session
  695.         AL = session number (00h-03h)
  696.         Return: AL = session type code
  697.                 00h not active
  698.                 01h display session
  699.                 02h printer session
  700.                 FEh invalid session number
  701.             DS = requested session's data segment (0 if not active)
  702.                 (see #0007)
  703. Return: ???
  704.  
  705. Format of System 36/38 emulator's data area:
  706. Offset    Size    Description    (Table 0007)
  707. 13Eh    BYTE    bit flags for status line indicators turned on since this byte
  708.         last zerod
  709. 13Fh    BYTE    bit flags for status line indicators turned off since this
  710.         byte last set to FFh
  711. 140h    WORD    offset of EBCDIC to ASCII translation
  712. 146h    WORD    offset of EBCDIC screen buffer
  713. 148h    WORD    offset of EC (engineering change) level signature
  714. 150h    BYTE    "KEYI"
  715. 151h    BYTE    5250 key scan code to be sent to remote
  716. 15Bh    BYTE    "SYSAV"
  717. 15Dh    BYTE    5250 cursor column
  718. 15Eh    BYTE    5250 cursor row
  719. 167h    BYTE    "DVCTAD"
  720. 178h    BYTE    "FLAGS"
  721. 184h    BYTE    "SESSNOAD"
  722. 193h    BYTE    "STNAD"
  723. 198h    BYTE    "NSDS"
  724. Note:    offsets are from the interrupt handler's segment
  725. --------H-0D---------------------------------
  726. INT 0D C - IRQ5 - FIXED DISK (PC,XT), LPT2 (AT), reserved (PS/2)
  727. Notes:    under DESQview, only the INT 15h vector and BASIC segment address (the
  728.       word at 0000h:0510h) may be assumed to be valid for the handler's
  729.       process
  730.     the Tandy 1000, 1000A, and 1000HD use IRQ2 for the hard disk; the
  731.       1000EX, HX, RLX, RLX-HD, RLX-B, RLX-HD-B use IRQ5 instead; the
  732.       1000RL, RL-HD, SL, SL/2, TL, TL/2, and TL/3 are jumper-selectable
  733.       for either IRQ2 or IRQ5 (default IRQ5); the 1000SX and TX are
  734.       DIP-switch selectable for IRQ2 or IRQ5 (default IRQ2); the RSX and
  735.       RSX-HD use IRQ14.  Tandy systems which use IRQ2 for the hard disk
  736.       interrupt use IRQ5 for vertical retrace.
  737.     may be masked by setting bit 5 on I/O port 21h
  738. SeeAlso: INT 0E"IRQ6",INT 0F"IRQ7",INT 55"DESQview",INT 5D"DoubleDOS"
  739. SeeAlso: INT 7D"GO32"
  740. --------H-0D---------------------------------
  741. INT 0D C - IRQ5 - Tandy 1000 60 Hz RAM REFRESH
  742. Desc:    used to ensure that the dynamic RAM retains its contents in earlier
  743.       1000-series models; later models use normal DMA for RAM refresh
  744.       (some early models have no DMA unless it is added via an expansion
  745.       card)
  746. SeeAlso: INT 55
  747. --------h-0D---------------------------------
  748. INT 0D - HP 95LX - INFRARED INTERRUPT
  749. Desc:    this interrupt is used to perform communications over the infrared
  750.       data link
  751. SeeAlso: INT 0B"HP 95LX",INT 0E"HP 95LX",INT 15/AX=4DD4h
  752. --------C-0D---------------------------------
  753. INT 0D C - CPU-generated (80286+) - GENERAL PROTECTION VIOLATION
  754. Desc:    the CPU generates this interrupt when it detects a protection violation
  755.       which does not fit under any other category having a separate
  756.       interrupt
  757. Notes:    called in real mode when
  758.         an instruction accesses a memory operand extending beyond offset
  759.           FFFFh (i.e. WORD at FFFFh or DWORD at FFFDh or higher) in segment
  760.           CS, DS, ES, FG, or GS
  761.         a PUSH MEM or POP MEM instruction contains an invalid bit encoding
  762.           in the second byte
  763.         an instruction exceeds the maximum length allowed (10 bytes for
  764.           80286, 15 bytes for 80386/80486)
  765.         an instruction wraps from offset FFFFh to offset 0000h
  766.     called in protected mode on protection violations not covered by INT 06
  767.       through INT 0C, including
  768.         segment limit violations
  769.         write to read-only segments
  770.         accesses using null DS or ES selectors
  771.         accesses to segments with privilege greater than CPL
  772.         wrong descriptor type
  773.     called on 80486 protected-mode floating-point protection fault
  774. SeeAlso: INT 09"80486",INT 0C"STACK"
  775. --------H-0E---------------------------------
  776. INT 0E C - IRQ6 - DISKETTE CONTROLLER
  777. Desc:    this interrupt is generated by the floppy disk controller on
  778.       completion of an operation
  779. Notes:    default handler is at F000h:EF57h in IBM PC and 100%-compatible BIOSes
  780.     may be masked by setting bit 6 on I/O port 21h
  781. SeeAlso: INT 0D"IRQ5",INT 56"DESQview",INT 5E"DoubleDOS",INT 7E"GO32"
  782. --------C-0E---------------------------------
  783. INT 0E C - CPU-generated (80386+ native mode) - PAGE FAULT
  784. Desc:    this interrupt is generated in protected and virtual-86 modes on
  785.       attempting to access a 4K memory page whose page table entry has
  786.       the "present" bit cleared
  787. Notes:    used to implement virtual memory--when the page fault occurs, the
  788.       operating system can load the appropriate page from disk
  789.     a protected-mode program written in the Flat memory model will often
  790.       generate this interrupt (typically reported as an Exception #14 or
  791.       Exception 0E with a register dump) when dereferencing an
  792.       uninitialized or corrupted pointer
  793. SeeAlso: INT 0B"CPU"
  794. --------h-0E---------------------------------
  795. INT 0E C - HP 95LX - EXTERNAL CARD INTERRUPT
  796. SeeAlso: INT 0D"HP 95LX",INT 0F"HP 95LX",INT 15/AX=4DD4h
  797. --------H-0F---------------------------------
  798. INT 0F C - IRQ7 - PARALLEL PRINTER
  799. Desc:    this interrupt is generated by the LPT1 printer adapter when the
  800.       printer becomes ready
  801. Notes:    most printer adapters do not reliably generate this interrupt
  802.     the 8259 interrupt controller generates an interrupt corresponding to
  803.       IRQ7 when an error condition occurs
  804. SeeAlso: INT 0D"IRQ5",INT 57"DESQview",INT 5F"DoubleDOS",INT 7F"GO32"
  805. SeeAlso: MEM 0040h:006Bh
  806. --------h-0F---------------------------------
  807. INT 0F C - HP 95LX - REAL-TIME CLOCK
  808. SeeAlso: INT 0E"HP 95LX",INT 15/AX=4DD4h,INT 70"IRQ8"
  809. --------C-10---------------------------------
  810. INT 10 C - CPU-generated (80286+) - COPROCESSOR ERROR
  811. Desc:    this interrupt is generated by the CPU when the -ERROR pin is asserted
  812.       by the coprocessor
  813. Note:    AT's and clones usually wire the coprocessor to use IRQ13, but not all
  814.       get it right
  815. SeeAlso: INT 09"hardware",INT 75
  816. --------V-1000-------------------------------
  817. INT 10 - VIDEO - SET VIDEO MODE
  818.     AH = 00h
  819.     AL = desired video mode (see #0009)
  820. Return: AL = video mode flag (Phoenix, AMI BIOS)
  821.         20h mode > 7
  822.         30h modes 0-5 and 7
  823.         3Fh mode 6
  824.     AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
  825. Desc:    specify the display mode for the currently active display adapter
  826. Notes:    IBM standard modes do not clear the screen if the high bit of AL is set
  827.       (EGA or higher only)
  828.     the Tseng ET4000 chipset is used by the Orchid Prodesigner II, Diamond
  829.       SpeedSTAR VGA, Groundhog Graphics Shadow VGA, Boca Super X VGA,
  830.       Everex EV-673, etc.
  831.     the installation check for Ahead adapters is the signature "AHEAD" at
  832.       C000h:0025h
  833.     the installation check for Paradise adapters is the signature "VGA=" at
  834.       C000h:007Dh
  835.     the installation check for Oak Tech OTI-037/057/067/077 chipsets is the
  836.       signature "OAK VGA" at C000h:0008h
  837.     the installation check for ATI adapters is the signature "761295520" at
  838.       C000h:0031h; the byte at C000h:0043h indicates the chipset revision:
  839.         31h for 18800
  840.         32h for 18800-1
  841.         33h for 18800-2
  842.         34h for 18800-4
  843.         35h for 18800-5
  844.         62h for 68800AX (Mach32) (see also #0656)
  845.       the two bytes at C000h:0040h indicate the adapter type
  846.         "22" EGA Wonder
  847.         "31" VGA Wonder
  848.         "32" EGA Wonder800+
  849.       the byte at C000h:0042h contains feature flags
  850.         bit 1: mouse port present
  851.         bit 4: programmable video clock
  852.       the byte at C000h:0044h contains additional feature flags if chipset
  853.         byte > 30h (see #0008)
  854.     the installation check for Genoa video adapters is the signature
  855.       77h XXh 99h 66h at C000h:NNNNh, where NNNNh is stored at C000h:0037h
  856.       and XXh is
  857.         00h for Genoa 6200/6300
  858.         11h for Genoa 6400/6600
  859.         22h for Genoa 6100
  860.         33h for Genoa 5100/5200
  861.         55h for Genoa 5300/5400
  862.       for SuperEGA BIOS v2.41+, C000h:0057h contains the product level
  863.       for SuperEGA BIOS v3.0+, C000h:0070h contains the signature
  864.         "EXTMODE", indicating support for extended modes
  865. SeeAlso: AX=0070h,AX=007Eh,AX=10E0h,AX=10F0h,AH=40h,AX=6F05h,AH=FFh"GO32"
  866. SeeAlso: INT 33/AX=0028h,INT 5F/AH=00h,INT 62/AX=0001h,MEM 0040h:0049h
  867. Index:    installation check;Tseng ET4000|installation check;Ahead video cards
  868. Index:    installation check;Oak Technologies|installation check;ATI video cards
  869. Index:    installation check;Paradise video|installation check;Genoa video cards
  870.  
  871. Bitfields for ATI additional feature flags:
  872. Bit(s)    Description    (Table 0008)
  873.  0    70 Hz non-interlaced display
  874.  1    Korean (double-byte) characters
  875.  2    45 MHz memory clock rather than 40 MHz
  876.  3    zero wait states
  877.  4    paged ROMs
  878.  6    no 8514/A monitor support
  879.  7    HiColor DAC
  880.  
  881. (Table 0009)
  882. Values for video mode:
  883.      text/ text pixel    pixel    colors disply scrn  system
  884.      grph resol     box  resolution       pages  addr
  885.  00h = T  40x25     8x8   320x200    16gray      8   B800 CGA,PCjr,Tandy
  886.      = T  40x25     8x14  320x350    16gray      8   B800 EGA
  887.      = T  40x25     8x16  320x400     16      8   B800 MCGA
  888.      = T  40x25     9x16  360x400     16      8   B800 VGA
  889.  01h = T  40x25     8x8   320x200     16      8   B800 CGA,PCjr,Tandy
  890.      = T  40x25     8x14  320x350     16      8   B800 EGA
  891.      = T  40x25     8x16  320x400     16      8   B800 MCGA
  892.      = T  40x25     9x16  360x400     16      8   B800 VGA
  893.  02h = T  80x25     8x8   640x200    16gray      4   B800 CGA,PCjr,Tandy
  894.      = T  80x25     8x14  640x350    16gray      8   B800 EGA
  895.      = T  80x25     8x16  640x400     16      8   B800 MCGA
  896.      = T  80x25     9x16  720x400     16      8   B800 VGA
  897.  03h = T  80x25     8x8   640x200     16      4   B800 CGA,PCjr,Tandy
  898.      = T  80x25     8x14  640x350     16/64      8   B800 EGA
  899.      = T  80x25     8x16  640x400     16      8   B800 MCGA
  900.      = T  80x25     9x16  720x400     16      8   B800 VGA
  901.      = T  80x43     8x8   640x350     16      4   B800 EGA,VGA [17]
  902.      = T  80x50     8x8   640x400     16      4   B800 VGA [17]
  903.  04h = G  40x25     8x8   320x200      4      .   B800 CGA,PCjr,EGA,MCGA,VGA
  904.  05h = G  40x25     8x8   320x200     4gray      .   B800 CGA,PCjr,EGA
  905.      = G  40x25     8x8   320x200      4      .   B800 MCGA,VGA
  906.  06h = G  80x25     8x8   640x200      2      .   B800 CGA,PCjr,EGA,MCGA,VGA
  907.      = G  80x25      .      .    mono      .   B000 HERCULES.COM on HGC [14]
  908.  07h = T  80x25     9x14  720x350    mono     var  B000 MDA,Hercules,EGA
  909.      = T  80x25     9x16  720x400    mono      .   B000 VGA
  910.  08h = T 132x25     8x8  1056x200     16      .   B800 ATI EGA/VGA Wonder [2]
  911.      = T 132x25     8x8  1056x200    mono      .   B000 ATI EGA/VGA Wonder [2]
  912.      = G  20x25     8x8   160x200     16      .    .  PCjr, Tandy 1000
  913.      = G  80x25     8x16  640x400    color      .    .  Tandy 2000
  914.      = G  90x43     8x8   720x348    mono      .   B000 Hercules + MSHERC.COM
  915.      = G  90x45     8x8   720x360    mono      .   B000 Hercules + HERKULES [11]
  916.      = G  90x29     8x12  720x348    mono      .    .  Hercules + HERCBIOS [15]
  917.  09h = G  40x25     8x8   320x200     16      .    .  PCjr, Tandy 1000
  918.      = G  80x25     8x16  640x400    mono      .    .  Tandy 2000
  919.      = G  90x43     8x8   720x348    mono      .    .  Hercules + HERCBIOS [15]
  920.  0Ah = G  80x25     8x8   640x200      4      .    .  PCjr, Tandy 1000
  921.  0Bh =     reserved                   (EGA BIOS internal use)
  922.      = G  80x25     8x8   640x200     16      .    .  Tandy 1000 SL/TL [13]
  923.  0Ch =     reserved                   (EGA BIOS internal use)
  924.  0Dh = G  40x25     8x8   320x200     16      8   A000 EGA,VGA
  925.  0Eh = G  80x25     8x8   640x200     16      4   A000 EGA,VGA
  926.  0Fh = G  80x25     8x14  640x350    mono      2   A000 EGA,VGA
  927.  10h = G  80x25     8x14  640x350      4      2   A000 64k EGA
  928.      = G    .      .    640x350     16      .   A000 256k EGA,VGA
  929.  11h = G  80x30     8x16  640x480    mono      .   A000 VGA,MCGA,ATI EGA,ATI VIP
  930.  12h = G  80x30     8x16  640x480     16/256K  .   A000 VGA,ATI VIP
  931.      = G  80x30     8x16  640x480     16/64      .   A000 ATI EGA Wonder
  932.      = G    .      .    640x480     16      .    .  UltraVision+256K EGA
  933.  13h = G  40x25     8x8   320x200    256/256K  .   A000 VGA,MCGA,ATI VIP
  934.  14h = T 132x25     Nx16      .     16      .   B800 XGA, IBM Enhanced VGA [3]
  935.      = T 132x25     8x16 1056x400     16/256K  .    .  Cirrus CL-GD5420/5422/5426
  936.      = G  80x25     8x8   640x200      .      .    .  Lava Chrome II EGA
  937.      = G    .      .    640x400     16      .    .  Tecmar VGA/AD
  938.  15h = G  80x25     8x14  640x350      .      .    .  Lava Chrome II EGA
  939.  16h = G  80x25     8x14  640x350      .      .    .  Lava Chrome II EGA
  940.      = G    .      .    800x600     16      .    .  Tecmar VGA/AD
  941.  17h = T 132x25      .      .      .      .    .  Tecmar VGA/AD
  942.      = T  80x43     8x8   640x348     16      4   B800 Tseng ET4000 BIOS [10]
  943.      = G  80x34     8x14  640x480      .      .    .  Lava Chrome II EGA
  944.  18h = T  80x30     9x16  720x480     16      1   A000 Realtek RTVGA [12]
  945.      = T 132x25      .      .    mono      .   B000 Cirrus 5320 chipset
  946.      = T 132x44     8x8  1056x352    mono      .   B000 Tseng Labs EVA
  947.      = T 132x44     9x8  1188x352     4gray      2   B000 Tseng ET3000 chipset
  948.      = T 132x44     8x8  1056x352     16/256      2   B000 Tseng ET4000 chipset
  949.      = G  80x34     8x14  640x480      .      .    .  Lava Chrome II EGA
  950.      = G          1024x768     16      .    .  Tecmar VGA/AD
  951.  19h = T  80x43     9x11  720x473     16      1   A000 Realtek RTVGA [12]
  952.      = T 132x25     8x14 1056x350    mono      .   B000 Tseng Labs EVA
  953.      = T 132x25     9x14 1188x350     4gray      4   B000 Tseng ET3000 chipset
  954.      = T 132x25     8x14 1056x350     16/256      4   B000 Tseng ET4000 chipset
  955.      = T 132x34      .      .    mono      .   B000 Cirrus 5320 chipset
  956.  1Ah = T  80x60     9x8   720x480     16      1   A000 Realtek RTVGA [12]
  957.      = T 132x28     8x13 1056x364    mono      .   B000 Tseng Labs EVA
  958.      = T 132x28     9x13 1188x364     4gray      4   B000 Tseng ET3000 chipset
  959.      = T 132x28     8x13 1056x364     16/256      4   B000 Tseng ET4000 chipset
  960.      = T 132x44      .      .    mono      .   B000 Cirrus 5320 chipset
  961.      = G    .      .    640x350    256      .    .  Tecmar VGA/AD
  962.  1Bh = T 132x25     9x14 1188x350     16      1   A000 Realtek RTVGA [12]
  963.      = G    .      .    640x400    256      .    .  Tecmar VGA/AD
  964.  1Ch = T 132x25      .      .      .      .    .  Cirrus 5320 chipset
  965.      = T 132x30     9x16 1188x480     16      1   A000 Realtek RTVGA [12]
  966.      = G    .      .    640x480    256      .    .  Tecmar VGA/AD
  967.  1Dh = T 132x43      .      .      .      .    .  Cirrus 5320 chipset
  968.      = T 132x43     9x11 1188x473     16      1   A000 Realtek RTVGA [12]
  969.      = G    .      .    800x600    256      .    .  Tecmar VGA/AD
  970.  1Eh = T 132x44      .      .      .      .    .  Cirrus 5320 chipset
  971.      = T 132x60     9x8  1188x480     16      1   A000 Realtek RTVGA [12]
  972.  1Fh = G 100x75     8x8   800x600     16      1   A000 Realtek RTVGA
  973.  20h = T 132x25      .      .     16      .    .  Avance Logic AL2101
  974.      = G  40x16      .    240x128    mono      .   B000 HP 95LX/100LX/200LX
  975.      = G 120x45     8x16  960x720     16      1   A000 Realtek RTVGA
  976.  21h = T  80x25      .      .    mono      .   B000 HP 200LX
  977.      = T 132x30      .      .     16      .    .  Avance Logic AL2101
  978.      = T 132x44     9x9  1188x396     16/256K  .   B800 WD90C
  979.      = T 132x44     9x9  1188x396     16      .   B800 Diamond Speedstar 24X
  980.      = T 132x60      .      .     16      2   B800 Tseng ET4000 chipset [10]
  981.      = G  80x43     8x8   720x348    mono      .   B000 DESQview 2.x+Hercules [4]
  982.      = G 128x48     8x16 1024x768     16      1   A000 Realtek RTVGA [12]
  983.  22h = T 132x43      .      .      .      .    .  Allstar Peacock (VGA)
  984.      = T 132x43      .      .     16      .    .  Avance Logic AL2101
  985.      = T 132x44     8x8  1056x352      .      .   B800 Tseng Labs EVA
  986.      = T 132x44     9x8  1188x352     16/256K  2   B800 Tseng ET3000 chipset
  987.      = T 132x44     8x8  1056x352     16/256K  2   B800 Tseng ET4000 chipset
  988.      = T 132x44     8x8  1056x352      .      .    .  Ahead Systems EGA2001
  989.      = T 132x44     8x8  1056x352     16      2   B800 Ahead B
  990.      = T 132x44     8x9  1056x398     16      .    .  STB Lightspeed ET4000/W32P
  991.      = T 132x44      .      .     16      .    .  Orchid Prodesigner VGA
  992.      = G  80x43     8x8   720x348    mono      .   B800 DESQview 2.x+Hercules [4]
  993.      = G  96x64     8x16  768x1024     16      1   A000 Realtek RTVGA
  994.  23h = T 132x25     6x14  792x350      .      .   B800 Tseng Labs EVA
  995.      = T 132x25     9x14 1188x350     16/256K  4   B800 Tseng ET3000 chipset
  996.      = T 132x25     8x14 1056x350     16/256      4   B800 Tseng ET4000 chipset
  997.      = T 132x25     8x14 1056x350      .      .    .  Ahead Systems EGA2001
  998.      = T 132x25     8x14 1056x350     16      4   B800 Ahead B
  999.      = T 132x25     8x8  1056x200     16      .   B800 ATI EGA Wonder,ATI VIP
  1000.      = T 132x25      .      .      .      .    .  Cirrus 5320 chipset
  1001.      = T 132x28      .      .      .      .    .  Allstar Peacock (VGA)
  1002.      = T 132x28      .      .     16      .    .  Orchid Prodesigner VGA
  1003.      = T 132x60      .      .     16      .    .  Avance Logic AL2101
  1004.      = G 128x48     8x16 1024x768      4      1   A000 Realtek RTVGA
  1005.  24h = T  80x30      .      .     16      .    .  Avance Logic AL2101
  1006.      = T 132x25      .      .      .      .    .  Allstar Peacock (VGA)
  1007.      = T 132x25      .      .     16      .    .  Orchid Prodesigner VGA
  1008.      = T 132x28     6x13  792x364      .      .   B800 Tseng Labs EVA
  1009.      = T 132x28     9x13 1188x364     16/256K  4   B800 Tseng ET3000 chipset
  1010.      = T 132x28     8x12 1056x336     16      1   B800 Ahead B
  1011.      = T 132x28     8x13 1056x364     16/256K  4   B800 Tseng ET4000 chipset
  1012.      = T 132x28     8x14 1056x392     16      .    .  STB Lightspeed ET4000/W32P
  1013.      = T 132x28      .      .      .      .    .  Cirrus 5320 chipset
  1014.      = G  64x32     8x16  512x512    256      1   A000 Realtek RTVGA
  1015.  25h = T  80x43      .      .     16      .    .  Avance Logic AL2101
  1016.      = G  80x60     8x8   640x480      .      .   A000 Tseng Labs EVA
  1017.      = G  80x60     8x8   640x480     16/256K  1   A000 Tseng ET3000/4000 chipset
  1018.      = G    .      .    640x480     16      .    .  VEGA VGA
  1019.      = G  80x60     8x8   640x480     16      .   A000 Orchid Prodesigner VGA
  1020.      = G  80x60     8x8   640x480     16      1   A000 Ahead B (same as 26h)
  1021.      = G    .      .    640x480     16      .    .  NEC GB-1
  1022.      = G    .      .    640x480     16      .    .  Cirrus 5320 chipset
  1023.      = G    .      .    640x400    256      .    .  Realtek RTVGA
  1024.  26h = T  80x60     8x8   640x480      .      .    .  Tseng Labs EVA
  1025.      = T  80x60     8x8   640x480     16/256K  3   B800 Tseng ET3000/4000 chipset
  1026.      = T  80x60      .      .      .      .    .  Allstar Peacock (VGA)
  1027.      = T  80x60      .      .     16      .    .  Orchid ProDesigner VGA
  1028.      = T  80x60      .      .     16      .    .  Avance Logic AL2101
  1029.      = G  80x60     8x8   640x480      .      .    .  Ahead Systems EGA2001
  1030.      = G  80x60     8x8   640x480     16      1   A000 Ahead B (same as 25h)
  1031.      = G    .      .    640x480    256      .    .  Realtek RTVGA
  1032.  27h = T 132x25     8x8  1056x200    mono      .   B000 ATI EGA Wonder,ATI VIP
  1033.      = G    .      .    720x512     16      .    .  VEGA VGA
  1034.      = G    .      .    720x512     16      .    .  Genoa
  1035.      = G 100x75     8x8   800x600    256      1   A000 Realtek RTVGA [12]
  1036.      = G    .      .    960x720     16      .    .  Avance Logic AL2101
  1037.  28h = T ???x???  .      .      .      .    .  VEGA VGA
  1038.      = G    .      .    512x512    256      .    .  Avance Logic AL2101
  1039.      = G    .      .   1024x768    256      .    .  Realtek RTVGA (1meg)
  1040.  29h = G    .      .    640x400    256      .    .  Avance Logic AL2101
  1041.      = G    .      .    800x600     16      .    .  VEGA VGA
  1042.      = G 100x37     8x16  800x600     16      .   A000 Orchid
  1043.      = G    .      .    800x600     16      .   A000 STB,Genoa,Sigma
  1044.      = G    .      .    800x600     16      .    .  Allstar Peacock (VGA)
  1045.      = G 100x37     8x16  800x600     16/256K  1   A000 Tseng ET3000/4000 chipset
  1046.      = G    .      .    800x600    ???      .    .  EIZO MDB10
  1047.      = G    .      .    800x600     16      .    .  Cirrus 5320 chipset
  1048.      = G   NA      .    800x600     16      .    .  Compaq QVision 1024/1280
  1049.      = G    .      .   1024x1024 256      .    .  Realtek RTVGA BIOS v3.C10
  1050.  2Ah = T 100x40      .      .      .      .    .  Allstar Peacock (VGA)
  1051.      = T 100x40     8x16  800x640     16      .    .  Orchid Prodesigner VGA
  1052.      = T 100x40     8x15  800x600     16/256K  4   B800 Tseng ET3000/4000 chipset
  1053.      = T 100x40     8x15  800x600     16      .    .  STB Lightspeed ET4000/W32P
  1054.      = G    .      .    640x480    256      .    .  Avance Logic AL2101
  1055.      = G    .      .   1280x1024     16      .    .  Realtek RTVGA
  1056.  2Bh = G    .      .    800x600     16      .    .  Avance Logic AL2101
  1057.  2Ch = G    .      .    800x600    256      .    .  Avance Logic AL2101
  1058.  2Dh = G    .      .    640x350    256      .    .  VEGA VGA
  1059.      = G    .      .    640x350    256/256K  .   A000 Orchid, Genoa, STB
  1060.      = G  80x25     8x14  640x350    256/256K  1   A000 Tseng ET3000/4000 chipset
  1061.      = G    .      .    640x350    256      .    .  Cirrus 5320 chipset
  1062.      = G  80x25     8x14  640x350    256      .    .  STB Lightspeed ET4000/W32P
  1063.      = G    .      .    768x1024     16      .    .  Avance Logic AL2101
  1064.  2Eh = G    .      .    640x480    256      .    .  VEGA VGA
  1065.      = G  80x30     8x16  640x480 256/256K      .   A000 Orchid
  1066.      = G    .      .    640x480 256/256K      .   A000 STB,Genoa,Sigma
  1067.      = G  80x30     8x16  640x480 256/256K      1   A000 Tseng ET3000/4000 chipset
  1068.      = G    .      .    640x480 256/256K      .    .  Compaq QVision 1024/1280
  1069.      = G    .      .    768x1024 256      .    .  Avance Logic AL2101
  1070.  2Fh = T 160x50     8x8  1280x400     16      4   B800 Ahead B (Wizard/3270)
  1071.      = G    .      .    720x512    256      .    .  VEGA VGA
  1072.      = G    .      .    720x512    256      .    .  Genoa
  1073.      = G  80x25     8x16  640x400 256/256K      1   A000 Tseng ET4000 chipset
  1074.      = G    .      .   1024x768      4      .    .  Avance Logic AL2101
  1075.  30h = G    .      .    800x600    256      .    .  VEGA VGA
  1076.      = G 100x37     8x16  800x600 256/256K      .   A000 Orchid
  1077.      = G    .      .    800x600 256/256K      .   A000 STB,Genoa,Sigma
  1078.      = G    .      .    720x350      2      .    .  3270 PC
  1079.      = G    .      .    800x600    256      .    .  Cardinal
  1080.      = G    .      .      .      .      .   B800 AT&T 6300
  1081.      = G 100x37     8x16  800x600 256/256K      1   A000 Tseng ET3000/4000 chipset
  1082.      = G    .      .   1024x768     16      .    .  Avance Logic AL2101
  1083.  31h = G    .      .   1024x768    256      .    .  Avance Logic AL2101
  1084.  32h = T  80x34     8x10      .     16      4   B800 Ahead B (Wizard/3270)
  1085.      = G    .      .    640x480    256      .    .  Compaq QVision 1024/1280
  1086.  33h = T 132x44     8x8      .     16      .   B800 ATI EGA Wonder,ATI VIP
  1087.      = T  80x34     8x8      .     16      4   B800 Ahead B (Wizard/3270)
  1088.  34h = T  80x66     8x8      .     16      4   B800 Ahead B (Wizard/3270)
  1089.      = G    .      .    800x600    256      .    .  Compaq QVision 1024/1280
  1090.  36h = G    .      .    960x720     16      .    .  VEGA VGA, STB
  1091.      = G    .      .    960x720     16      .   A000 Tseng ET3000 only
  1092.      = G    .      .   1280x1024     16      .    .  Avance Logic AL2101
  1093.  37h = T 132x44     8x8      .    mono      .   B800 ATI EGA Wonder,ATI VIP
  1094.      = G    .      .   1024x768     16      .    .  VEGA VGA
  1095.      = G 128x48     8x16 1024x768     16      .   A000 Orchid
  1096.      = G    .      .   1024x768     16      .   A000 STB,Genoa,Sigma
  1097.      = G    .      .   1024x768     16      .    .  Definicon
  1098.      = G 128x48     8x16 1024x768     16      1   A000 Tseng ET3000/4000 chipset
  1099.      = G    .      .   1024x768     16      .    .  Compaq QVision 1024/1280
  1100.      = G    .      .   1280x1024 256      .    .  Avance Logic AL2101
  1101.  38h = G    .      .   1024x768    256      .    .  STB VGA/EM-16 Plus (1MB)
  1102.      = G 128x48     8x16 1024x768    256/256K  1   A000 Tseng ET4000 chipset
  1103.      = G    .      .   1024x768    256      .    .  Orchid ProDesigner II
  1104.      = G    .      .   1024x768    256      .    .  Compaq QVision 1024/1280
  1105.  39h = G    .      .   1280x1024     16      .    .  Compaq QVision 1280
  1106.  3Ah = G    .      .   1280x1024    256      .    .  Compaq QVision 1280
  1107.  3Bh = G    .      .    512x480    256      .    .  Compaq QVision 1024/1280
  1108.  3Ch = G    .      .    640x400     64K      .    .  Compaq QVision 1024/1280
  1109.  3Dh = G    .      .   1280x1024     16      .    .  Definicon
  1110.      = G 128x64     8x16 1280x1024     16      1   A000 Tseng ET4000 v3.00 [1,7]
  1111.  3Eh = G    .      .   1280x961     16      .    .  Definicon
  1112.      = G    .      .    640x480     64K      .    .  Compaq QVision 1024/1280
  1113.  3Fh = G    .      .   1280x1024 256      .    .  Hercules ??? (ET4000W32)
  1114.      = G    .      .    800x600     64K      .    .  Compaq QVision 1024/1280
  1115.  40h = T  80x43      .      .      .      .    .  VEGA VGA, Tecmar VGA/AD
  1116.      = T  80x43      .      .      .      .    .  Video7 V-RAM VGA
  1117.      = T  80x43      .      .      .      .    .  Tatung VGA
  1118.      = T 100x30      .      .     16      .    .  MORSE VGA
  1119.      = T 100x30      .      .      .      .    .  Cirrus 510/520 chipset
  1120.      = T  80x25      .    720x350    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1121.      = G    .      .    320x200     64K      .    .  Avance Logic AL2101
  1122.      = G  80x25     8x16  640x400      2      1   B800 AT&T 6300, AT&T VDC600
  1123.      = G  80x25     8x16  640x400      2      1   B800 Olivetti Quaderno
  1124.      = G  80x25     8x16  640x400      2      1   B800 Compaq Portable
  1125.      = G    .      .   1024x768     64K      .    .  Compaq QVision 1280
  1126.  41h = T 132x25      .      .      .      .    .  VEGA VGA
  1127.      = T 132x25      .      .      .      .    .  Tatung VGA
  1128.      = T 132x25      .      .      .      .    .  Video7 V-RAM VGA
  1129.      = T 100x50      .      .     16      .    .  MORSE VGA
  1130.      = T 100x50      .      .      .      .    .  Cirrus 510/520 chipset
  1131.      = T  80x34     9x14  720x476     16/256K  .   B800 WD90C
  1132.      = T  80x34     9x14      .     16      .   B800 Diamond Speedstar 24X
  1133.      = G    .      .    512x512     64K      .    .  Avance Logic AL2101
  1134.      = G    .      .    640x200     16      1    .  AT&T 6300
  1135.      = G  80x25      .    720x348    mono      .   B000 Genoa SuperEGA BIOS 3.0+
  1136.  42h = T 132x43      .      .      .      .    .  VEGA VGA
  1137.      = T 132x43      .      .      .      .    .  Tatung VGA
  1138.      = T 132x43      .      .      .      .    .  Video7 V-RAM VGA
  1139.      = T  80x34     9x10      .      4      4   B800 Ahead B (Wizard/3270)
  1140.      = T 100x60      .      .     16      .    .  MORSE VGA
  1141.      = T 100x60      .      .      .      .    .  Cirrus 510/520 chipset
  1142.      = G  80x25     8x16  640x400     16      .    .  AT&T 6300, AT&T VDC600
  1143.      = G    .      .    640x400     64K      .    .  Avance Logic AL2101
  1144.      = G  80x25      .    720x348    mono      .   B800 Genoa SuperEGA BIOS 3.0+
  1145.  43h = T  80x60      .      .      .      .    .  VEGA VGA
  1146.      = T  80x60      .      .      .      .    .  Tatung VGA
  1147.      = T  80x60      .      .      .      .    .  Video7 V-RAM VGA
  1148.      = T  80x45     9x8      .      4      4   B800 Ahead B (Wizard/3270)
  1149.      = T 100x75      .      .     16      .    .  MORSE VGA
  1150.      = T  80x29      .    720x348    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1151.      = G    .      . 640x200 of 640x400 viewport       AT&T 6300 (unsupported)
  1152.      = G    .      .    640x480     64K      .    .  Avance Logic AL2101
  1153.  44h =    disable VDC and DEB output        .  AT&T 6300
  1154.      = T 100x60      .      .      .      .    .  VEGA VGA
  1155.      = T 100x60      .      .      .      .    .  Tatung VGA
  1156.      = T 100x60      .      .      .      .    .  Video7 V-RAM VGA
  1157.      = T  80x32      .    720x352    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1158.      = G    .      .    800x600     64K      .    .  Avance Logic AL2101
  1159.  45h = T 132x28      .      .      .      .    .  Tatung VGA
  1160.      = T 132x28      .      .      .      .    .  Video7 V-RAM VGA
  1161.      = T  80x44      .    720x352    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1162.  46h = T 132x25     8x14      .    mono      .    .  Genoa 6400
  1163.      = T 132x25     9x14      .    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1164.      = G 100x40     8x15  800x600      2      .    .  AT&T VDC600
  1165.  47h = T 132x29     8x12      .    mono      .    .  Genoa 6400
  1166.      = T 132x29     9x12      .    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1167.      = T 132x28     9x16 1188x448     16/256K  .   B800 WD90C
  1168.      = T 132x28     9x16      .     16      .   B800 Diamond Speedstar 24X
  1169.      = G 100x37     8x16  800x600     16      .    .  AT&T VDC600
  1170.  48h = T 132x32     8x12      .    mono      .    .  Genoa 6400
  1171.      = T 132x32     9x11      .    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1172.      = G  80x50     8x8   640x400      2      .   B800 AT&T 6300, AT&T VDC600
  1173.      = G  80x50     8x8   640x400      2      .   B800 Olivetti Quaderno
  1174.  49h = T 132x44     8x8      .    mono      .    .  Genoa 6400
  1175.      = T 132x44     9x8      .    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1176.      = G  80x30     8x16  640x480      .      .    .  Lava Chrome II EGA
  1177.      = G  80x30     8x16  640x480      .      .   A000 Diamond Stealth64 Video 2xx1
  1178.  4Bh = G 100x37     8x16  800x600      .      .   A000 Diamond Stealth64 Video 2xx1
  1179.  4Dh = T 120x25      .      .      .      .    .  VEGA VGA
  1180.      = G    .      .    512x480     16M      .    .  Compaq QVision 1024/1280
  1181.      = G 128x48     8x16 1024x768      .      .   A000 Diamond Stealth64 Video 2xx1
  1182.  4Eh = T 120x43      .      .      .      .    .  VEGA VGA
  1183.      = T  80x60     8x8      .     16/256K  .   B800 Oak OTI-067/OTI-077 [8]
  1184.      = G    .      .    640x400     16M      .    .  Compaq QVision 1024/1280
  1185.      = G 144x54     8x16 1152x864      .      .   A000 Diamond Stealth64 Video 2xx1
  1186.  4Fh = T 132x25      .      .      .      .    .  VEGA VGA
  1187.      = T 132x60      .      .      .      .    .  some Oak Tech VGA [8]
  1188.      = G    .      .    640x480     16M      .    .  Compaq QVision 1280
  1189.  50h = T  80x30     8x16      .     16/256K  .   B800 Trident TVGA 8800/8900
  1190.      = T  80x34      .      .      .      .    .  Lava Chrome II EGA
  1191.      = T  80x43      .      .    mono      .    .  VEGA VGA
  1192.      = T 132x25     9x14      .    mono      .    .  Ahead Systems EGA2001
  1193.      = T 132x25     9x14      .      4      4   B800 Ahead B
  1194.      = T 132x25     8x14      .     16      8   B800 OAK Technologies VGA-16
  1195.      = T 132x25     8x14      .     16/256K  .   B800 Oak OTI-037/067/077 [8]
  1196.      = T 132x25     8x14 1056x350     16      8   B800 UM587 chipset
  1197.      = T 132x30      .      .     16      .    .  MORSE VGA
  1198.      = T 132x30      .      .      .      .    .  Cirrus 510/520 chipset
  1199.      = G  80x30     8x16  640x480     16      .    .  Paradise EGA-480
  1200.      = G  80x30     8x16  640x480     16      .    .  NEL Electronics BIOS
  1201.      = G    .      .    640x480    mono???      .    .  Taxan 565 EGA
  1202.      = G  40x25     8x8   320x200      .      .    .  Genoa SuperEGA BIOS 3.0+
  1203.  51h = T  80x30     8x16      .      .      .    .  Paradise EGA-480
  1204.      = T  80x30     9x16      .      .      .    .  NEL Electronics BIOS
  1205.      = T  80x30      .      .      .      .    .  Lava Chrome II EGA
  1206.      = T  80x43     8x11      .     16/256K  .   B800 Trident TVGA 8800/8900
  1207.      = T 132x25      .      .    mono      .    .  VEGA VGA
  1208.      = T 132x28     9x12      .      4      4   B800 Ahead B
  1209.      = T 132x43     8x8      .     16      5   B800 OAK Technologies VGA-16
  1210.      = T 132x43     8x8      .     16/256K  .   B800 Oak OTI-037/067/077
  1211.      = T 132x43     8x8  1056x344     16      5   B800 UM587 chipset
  1212.      = T 132x50      .      .     16      .    .  MORSE VGA
  1213.      = T 132x50      .      .      .      .    .  Cirrus 510/520 chipset
  1214.      = G  80x34     8x14  640x480     16      .    .  ATI EGA Wonder
  1215.      = G  80x25     8x8   640x200      .      .    .  Genoa SuperEGA BIOS 3.0+
  1216.  52h = T  80x60      .      .      .      .    .  Lava Chrome II EGA
  1217.      = T  80x60     8x8      .     16/256K  .   B800 Trident TVGA 8800/8900
  1218.      = T 132x43      .      .    mono      .    .  VEGA VGA
  1219.      = T 132x44     9x8      .    mono      .    .  Ahead Systems EGA2001
  1220.      = T 132x44     9x8      .      4      2   B800 Ahead B
  1221.      = T 132x60      .      .     16      .    .  MORSE VGA
  1222.      = T 132x60      .      .      .      .    .  Cirrus 510/520 chipset
  1223.      = G  80x25     8x19  640x480     16      1   A000 AX VGA (Kanji&superimpose)
  1224.      = G  94x29     8x14  752x410     16      .    .  ATI EGA Wonder
  1225.      = G 100x75     8x8   800x600     16      1   A000 OAK Technologies VGA-16
  1226.      = G 100x75     8x8   800x600     16      .   A000 Oak OTI-037 chipset [8]
  1227.      = G 100x37     8x16  800x600     16      .   A000 Oak OTI-067/077 chips [8]
  1228.      = G 100x75     8x8   800x600     16      .   A000 UM587 chipset
  1229.      = G 128x30     8x16 1024x480     16      .    .  NEL Electronics BIOS
  1230.  53h = T  80x25     8x16      .      .      .    .  NEL Electronics BIOS
  1231.      = T  80x60      .      .     16      .    .  MORSE VGA
  1232.      = T  80x60      .      .      .      .    .  Cirrus 510/520 chipset
  1233.      = T 132x25     8x14      .     16/256K  .   B800 Trident TVGA 8800/8900
  1234.      = T 132x43      .      .      .      .    .  Lava Chrome II EGA
  1235.      = G  80x25     8x19  640x480     16      1   A000 AX VGA (Kanji, no superimp.)
  1236.      = G    .      .    640x480    256      .    .  Oak VGA
  1237.      = G  80x30     8x16  640x480    256      .   A000 Oak OTI-067/OTI-077 [8]
  1238.      = G 100x40     8x14  800x560     16      .    .  ATI EGA Wonder,ATI VIP
  1239.      = G    .      .      .      .      .    .  AX PC
  1240.  54h = T 132x25      .      .      .      .    .  Lava Chrome II EGA
  1241.      = T 132x30     8x16      .     16/256K  .   B800 Trident TVGA 8800/8900
  1242.      = T 132x43     8x8      .      .      .    .  Paradise EGA-480
  1243.      = T 132x43     8x8      .      .      .    .  NEL Electronics BIOS
  1244.      = T 132x43     7x9      .     16/256K  .   B800 Paradise VGA
  1245.      = T 132x43     8x9      .     16/256K  .   B800 Paradise VGA on multisync
  1246.      = T 132x43      .      .      .      .    .  Taxan 565 EGA
  1247.      = T 132x43      .      .      .      .    .  AST VGA Plus
  1248.      = T 132x43      .      .      .      .    .  Hewlett-Packard D1180A
  1249.      = T 132x43     7x9      .     16      .    .  AT&T VDC600
  1250.      = T 132x43     9x9  1188x387     16/256K  .   B800 WD90C
  1251.      = T 132x43     9x9  1188x387     16/256K  .   B800 Diamond Speedstar 24X
  1252.      = T 132x43     9x9  1188x387     16/256K  .   B800 Diamond Stealth 24
  1253.      = T 132x43     8x8      .      .      .   B800 Diamond Stealth64 Video 2xx1
  1254.      = T 132x43     8x8  1056x350     16/256K  .    .  Cirrus CL-GD5420/5422/5426
  1255.      = T 132x50     8x8      .     16      .   A000 NCR 77C22 [9]
  1256.      = G 100x42     8x14  800x600     16      .   A000 ATI EGA Wonder, VGA Wonder
  1257.      = G 100x42     8x14  800x600     16      .   A000 ATI Ultra 8514A, ATI XL
  1258.      = G    .      .    800x600    256      .   A000 Oak VGA
  1259.      = G 100x37     8x16  800x600    256      .   A000 Oak OTI-067/077 chips [8]
  1260.  55h = T  80x66     8x8      .     16/256K  .   A000 ATI VIP
  1261.      = T 132x25     8x14      .      .      .    .  Paradise EGA-480
  1262.      = T 132x25     8x14      .      .      .    .  NEL Electronics BIOS
  1263.      = T 132x25     7x16      .     16/256K  .   B800 Paradise VGA
  1264.      = T 132x25     8x16      .     16/256K  .   B800 Paradise VGA on multisync
  1265.      = T 132x25      .      .      .      .    .  Taxan 565 EGA
  1266.      = T 132x25      .      .      .      .    .  AST VGA Plus
  1267.      = T 132x25      .      .      .      .    .  Hewlett-Packard D1180A
  1268.      = T 132x25     7x16      .     16      .    .  AT&T VDC600
  1269.      = T 132x25     8x16      .     16      .   A000 NCR 77C22 [9]
  1270.      = T 132x25     9x16 1188x400     16/256K  .   B800 WD90C
  1271.      = T 132x25     9x16 1188x400     16/256K  .   B800 Diamond Speedstar 24X
  1272.      = T 132x25     9x16 1188x400     16/256K  .   B800 Diamond Stealth 24
  1273.      = T 132x25     8x16      .      .      .   B800 Diamond Stealth64 Video 2xx1
  1274.      = T 132x25     8x14 1056x350     16/256K  .    .  Cirrus CL-GD5420/5422/5426
  1275.      = T 132x43     8x11      .     16/256K  .   B800 Trident TVGA 8800/8900
  1276.      = G  94x29     8x14  752x410      .      .    .  Lava Chrome II EGA
  1277.      = G 128x48     8x16 1024x768     16/256K  .   A000 ATI VGA Wonder v4+  [5]
  1278.      = G    .      .   1024x768     16/256K  .    .  ATI VGA Wonder Plus
  1279.      = G    .      .   1024x768     16/256K  .    .  ATI Ultra 8514A,ATI XL
  1280.      = G 128x48     8x16 1024x768      4      .   A000 Oak OTI-067/077 chips [8]
  1281.  56h = T 132x43     8x8      .      3???      2   B000 NSI Smart EGA+
  1282.      = T 132x43     7x9      .      4      .   B000 Paradise VGA
  1283.      = T 132x43     8x9      .      4      .   B000 Paradise VGA on multisync
  1284.      = T 132x43      .      .    mono      .    .  Taxan 565 EGA
  1285.      = T 132x43     7x9      .      2      .    .  AT&T VDC600
  1286.      = T 132x43     9x8      .      .      .    .  NEL Electronics BIOS
  1287.      = T 132x50     8x8      .      4      .   A000 NCR 77C22 [9]
  1288.      = T 132x60     8x8      .     16/256K  .   B800 Trident TVGA 8800/8900
  1289.      = G    .      .   1024x768     16      .   A000 Oak VGA
  1290.      = G 128x48     8x16 1024x768     16      .   A000 Oak OTI-067/077 chips [8]
  1291.  57h = T 132x25     8x14      .      3???      4   B000 NSI Smart EGA+
  1292.      = T 132x25     7x16      .      4      .   B000 Paradise VGA
  1293.      = T 132x25     8x16      .      4      .   B000 Paradise VGA on multisync
  1294.      = T 132x25     9x14      .      .      .    .  NEL Electronics BIOS
  1295.      = T 132x25      .      .    mono      .    .  Taxan 565 EGA
  1296.      = T 132x25     7x16      .      2      .    .  AT&T VDC600
  1297.      = T 132x25     9x14      .     16/256K  .   B800 Trident TVGA 8800/8900
  1298.      = T 132x25     8x16      .      4      .   A000 NCR 77C22 [9]
  1299.      = G  96x48     8x16  768x1024     16      .   A000 Oak OTI-067/077 chips [8]
  1300.  58h = T  80x33     8x14      .     16      .   B800 ATI EGA Wonder,ATI VIP
  1301.      = T  80x32     9x16      .     16      .    .  Genoa 6400
  1302.      = T  80x43     8x8      .      .      .    .  NEL Electronics BIOS
  1303.      = T 132x30     9x16      .     16/256K  .   B800 Trident TVGA 8800/8900
  1304.      = G 100x75     8x8   800x600     16/256K  .   A000 Paradise VGA
  1305.      = G 100x75     8x8   800x600     16      .    .  AT&T VDC600
  1306.      = G 100x75     8x8   800x600     16      .   A000 NCR 77C22 [9]
  1307.      = G 100x75     8x8   800x600     16      .   A000 Diamond Speedstar 24X
  1308.      = G 100x75     8x8   800x600     16/256K  .   A000 Paradise VGA, WD90C
  1309.      = G    .      .    800x600     16      .    .  AST VGA Plus, Compaq VGA
  1310.      = G    .      .    800x600     16      .    .  Dell VGA
  1311.      = G    .      .    800x600     16      .    .  Hewlett-Packard D1180A
  1312.      = G    .      .    800x600    ???      .    .  ELT VGA PLUS 16
  1313.      = G 100x37     8x16  800x600     16/256K  .   A000 Cirrus CL-GD5420/5422/5426
  1314.      = G 160x64     8x16 1280x1024     16      .   A000 Oak OTI-077 chipset [8]
  1315.  59h = T  80x43     9x8      .      .      .    .  NEL Electronics BIOS
  1316.      = T  80x66     8x8      .     16/256K  .   A000 ATI VIP
  1317.      = T 132x43     9x11      .     16/256K  .   B800 Trident TVGA 8800/8900
  1318.      = G 100x75     8x8   800x600      2      .   A000 Paradise VGA
  1319.      = G 100x75     8x8   800x600      2      .    .  AT&T VDC600
  1320.      = G    .      .    800x600      2      .    .  AST VGA Plus, Compaq VGA
  1321.      = G    .      .    800x600      2      .    .  Dell VGA
  1322.      = G    .      .    800x600      2      .    .  Hewlett-Packard D1180A
  1323.      = G 100x75     8x8   800x600      2      .   A000 NCR 77C22 [9]
  1324.      = G 128x48     8x16 1024x768    256      .   A000 Oak OTI-077 chipset [8]
  1325.  5Ah = T  80x60     8x8      .      .      .    .  NEL Electronics BIOS
  1326.      = T 132x60     9x8      .     16/256K  .   B800 Trident TVGA 8800/8900
  1327.      = G 128x48     8x16 1024x768      2      .   A000 NCR 77C22 [9]
  1328.  5Bh = T  80x30     8x16      .      .      .   B800 ATI VGA Wonder (undoc)
  1329.      = G    .      .    640x350    256      .    .  Genoa 6400
  1330.      = G  80x25     8x16  640x400     32K      .   A000 Oak OTI-067/077 chips [8]
  1331.      = G    .      .    800x600     16      .    .  Maxxon, SEFCO TVGA, Imtec
  1332.      = G 100x75     8x8   800x600     16/256K  .   A000 Trident TVGA 8800, 8900
  1333.      = G    .      .    800x600    ???      .    .  Vobis MVGA
  1334.      = G 100x37     8x16  800x600      .      .    .  NEL Electronics BIOS
  1335.      = G 128x48     8x16 1024x768     16      .   A000 NCR 77C22 [1,9]
  1336.  5Ch = T 100x37     8x16      .      .      .    .  NEL Electronics BIOS
  1337.      = G    .      .    640x400    256      .    .  Logix, ATI Prism Elite
  1338.      = G    .      .    640x400    256      .    .  Maxxon, SEFCO TVGA, Imtec
  1339.      = G  80x25     8x16  640x400    256/256K  .   A000 Zymos Poach, Hi Res 512
  1340.      = G  80x25     8x16  640x400    256/256K  .   A000 Trident TVGA 8800/8900
  1341.      = G  80x30     8x16  640x480    256      .    .  Genoa 6400
  1342.      = G  80x30     8x16  640x480     32K      .   A000 Oak OTI-077 chipset [8]
  1343.      = G 100x75     8x8   800x600    256      .   A000 NCR 77C22 [9]
  1344.      = G 100x75     8x8   800x600    256/256K  .   A000 WD90C
  1345.      = G 100x75     8x8   800x600    256/256K  .   A000 Diamond Speedstar 24X
  1346.      = G 100x37     8x16  800x600    256/256K  .   A000 Cirrus CL-GD5420/5422/5426
  1347.  5Dh = T 100x75     8x8      .      .      .    .  NEL Electronics BIOS
  1348.      = G  80x25     8x14  640x350     64K      .    .  STB Lightspeed ET4000/W32P
  1349.      = G    .      .    640x480    256      .    .  Logix, ATI Prism Elite
  1350.      = G    .      .    640x480    256      .    .  Maxxon, SEFCO TVGA, Imtec
  1351.      = G  80x30     8x16  640x480    256/256K  .   A000 Zymos Poach, Hi Res 512
  1352.      = G  80x30     8x16  640x480    256/256K  .   A000 Trident TVGA 8800 (512K)
  1353.      = G 128x48     8x16 1024x768     16      .   A000 NCR 77C22 [9]
  1354.      = G 128x48     8x16 1024x768     16/256K  .   A000 WD90C
  1355.      = G 128x48     8x16 1024x768     16      .   A000 Diamond Speedstar 24X
  1356.      = G 128x48     8x16 1024x768     16/256K  .   A000 Cirrus CL-GD5420/5422/5426
  1357.  5Eh = G    .      .    640x400    256      .    .  Paradise VGA,VEGA VGA
  1358.      = G    .      .    640x400    256      .    .  AST VGA Plus, NCR 77C22
  1359.      = G    .      .    640x400    256      .    .  Compaq VGA, Dell VGA
  1360.      = G  80x25     8x16  640x400    256      .    .  AT&T VDC600
  1361.      = G  80x25     8x16  640x400    256      .   A000 NCR 77C22 [9]
  1362.      = G  80x25     8x16  640x400    256/256K  .   A000 WD90C
  1363.      = G  80x25     8x16  640x400    256/256K  .   A000 Diamond Speedstar 24X
  1364.      = G    .      .    800x600     16      .    .  Logix, ATI Prism Elite
  1365.      = G 100x37     8x16  800x600     16      .    .  NEL Electronics BIOS
  1366.      = G 100x75     8x8   800x600    256      .    .  Genoa 6400
  1367.      = G 100x75     8x8   800x600    256/256K  .   A000 Zymos Poach, Trident 8900
  1368.      = G 100x75     8x8   800x600    256/256K  .   A000 Hi Res 512
  1369.  5Fh = G  80x25     8x16  640x400     64K      .    .  STB Lightspeed ET4000/W32P
  1370.      = G    .      .    640x480    256      .    .  Paradise VGA
  1371.      = G    .      .    640x480    256      .    .  AST VGA Plus, NCR 77C22
  1372.      = G    .      .    640x480    256      .    .  Compaq VGA, Dell VGA
  1373.      = G    .      .    640x480    256      .    .  Hewlett-Packard D1180A
  1374.      = G  80x30     8x16  640x480    256      .    .  AT&T VDC600 (512K)
  1375.      = G  80x30     8x16  640x480    256      .   A000 NCR 77C22 [9]
  1376.      = G  80x30     8x16  640x480    256/256K  .   A000 WD90C
  1377.      = G  80x30     8x16  640x480    256/256K  .   A000 Diamond Speedstar 24X
  1378.      = G  80x30     8x16  640x480    256/256K  .   A000 Cirrus CL-GD5420/5422/5426
  1379.      = G    .      .   1024x768     16      .    .  Logix, ATI Prism Elite
  1380.      = G    .      .   1024x768     16      .    .  Maxxon, Imtec
  1381.      = G 128x48     8x16 1024x768     16      .    .  Genoa 6400
  1382.      = G 128x48     8x16 1024x768     16/256K  .   A000 Zymos Poach, Hi Res 512
  1383.      = G 128x48     8x16 1024x768     16/256K  .   A000 Trident TVGA 88/8900 512K
  1384.  60h = T 132x25     8x14      .     16/64      8   B800 Quadram Ultra VGA
  1385.      = T 132x25     8x14      .     16      .    .  Genoa 6400
  1386.      = T 132x25     8x14      .     16      .    .  Genoa SuperEGA BIOS 3.0+
  1387.      = T 132x25      .      .      .      .    .  Cirrus 5320 chipset
  1388.      = T 132x25      .      .     16      .    .  Chips&Technologies chipset
  1389.      = G  80x???  .    ???x400      .      .    .  Corona/Cordata BIOS 4.10+
  1390.      = G  80x25     8x16  640x400    256      1   A000 Ahead A, Ahead B
  1391.      = G    .      .    752x410      .      .    .  VEGA VGA
  1392.      = G    .      .    752x410     16      .    .  Tatung VGA
  1393.      = G    .      .    752x410     16      .    .  Video7 V-RAM VGA
  1394.      = G 128x48     8x16 1024x768      4/256K  .   A000 Trident TVGA 8900
  1395.      = G 128x48     8x16 1024x768    256/256K  .   A000 WD90C
  1396.      = G 128x48     8x16 1024x768    256/256K  .   A000 Diamond Speedstar 24X
  1397.      = G 128x48     8x16 1024x768    256/256K  .   A000 Cirrus CL-GD5420/5422/5426
  1398.      = G 144x54     8x16 1152x864      .      .   A000 Diamond Stealth64 Video 2xx1
  1399.  61h = T 132x29     8x12      .     16/64      8   B800 Quadram Ultra VGA
  1400.      = T 132x29     8x8      .     16      .    .  Genoa 6400
  1401.      = T 132x29     8x8      .     16      .    .  Genoa SuperEGA BIOS 3.0+
  1402.      = T 132x50      .      .      .      .    .  Cirrus 5320 chipset
  1403.      = T 132x50      .      .     16      .    .  Chips&Technologies chipset
  1404.      = G    .      .    ???x400      .      .    .  Corona/Cordata BIOS 4.10+
  1405.      = G  80x25     8x16  640x400    256      .   A000 ATI VGA Wonder,VGA Wonder+
  1406.      = G  80x25     8x16  640x400    256      .   A000 ATI Ultra 8514A,ATI XL
  1407.      = G  80x25     8x16  640x400      .      .   A000 Diamond Stealth64 Video 2xx1
  1408.      = G  80x30     8x16  640x480    256      1   A000 Ahead A, Ahead B (512K)
  1409.      = G    .      .    720x540      .      .    .  VEGA VGA
  1410.      = G    .      .    720x540     16      .    .  Tatung VGA
  1411.      = G    .      .    720x540     16      .    .  Video7 V-RAM VGA
  1412.      = G  96x64     8x16  768x1024     16/256K  .   A000 Trident TVGA 88/8900 512K
  1413.      = G 128x48     8x16 1024x768    256      .   A000 NCR 77C22 [1,9]
  1414.      = G 144x54     8x16 1152x864      .      .   A000 Diamond Stealth64 Video 2xx1
  1415.  62h = T 132x32     8x11      .     16/64      6   B800 Quadram Ultra VGA
  1416.      = T 132x32     8x12      .     16      .    .  Genoa 6400
  1417.      = T 132x32     8x11      .     16      .    .  Genoa SuperEGA BIOS 3.0+
  1418.      = G    .      .    640x450     16      .    .  Cirrus 510/520 chipset
  1419.      = G  80x30     8x16  640x480    256      .   A000 ATI VGA Wonder,VGA Wonder+
  1420.      = G  80x30     8x16  640x480    256      .   A000 ATI Ultra 8514A,ATI XL
  1421.      = G  80x30     8x16  640x480    32K      .   A000 WD90C
  1422.      = G  80x30     8x16  640x480    32K      .   A000 Diamond Speedstar 24X
  1423.      = G    .      .    800x600      .      .    .  VEGA VGA
  1424.      = G    .      .    800x600     16      .    .  Tatung VGA
  1425.      = G    .      .    800x600     16      .    .  Video7 V-RAM VGA
  1426.      = G 100x75     8x8   800x600    256      1   A000 Ahead A, Ahead B (512K)
  1427.      = G 128x48     8x16 1024x768    256/256K  .   A000 Trident TVGA 8900, Zymos
  1428.      = G 128x48     8x16 1024x768    256      .   A000 NCR 77C22 [9]
  1429.  63h = T 132x44     8x8      .     16/64      5   B800 Quadram Ultra VGA
  1430.      = T 132x44     8x8      .     16      .    .  Genoa 6400
  1431.      = T 132x44     8x8      .     16      .    .  Genoa SuperEGA BIOS 3.0+
  1432.      = G    .      .    720x540     16      .    .  MORSE VGA
  1433.      = G    .      .    720x540     16      .    .  Cirrus 510/520 chipset
  1434.      = G 100x42     8x14  800x600    256      .   A000 ATI VGA Wonder,VGA Wonder+
  1435.      = G 100x42     8x14  800x600    256      .   A000 ATI Ultra 8514A,ATI XL
  1436.      = G    .      .    800x600    32K      .   A000 WD90C
  1437.      = G    .      .    800x600    32K      .   A000 Diamond Speedstar 24X
  1438.      = G 128x48     7x16 1024x768    256      1   A000 Ahead B (1MB)
  1439.      = G    .      .   1024x768      2      .    .  Video7 V-RAM VGA
  1440.  64h = T 132x60     8x8      .     16      .    .  Genoa 6400
  1441.      = G    .      .    640x480    64K      .   A000 Cirrus CL-GD 5422/5426
  1442.      = G    .      .    800x600     16      .    .  MORSE VGA
  1443.      = G    .      .    800x600     16      .    .  Cirrus 510/520 chipset
  1444.      = G    .      .    800x600    ???      .    .  SAMPO-Mira VGA
  1445.      = G    .      .   1024x768      4      .    .  Video7 V-RAM VGA
  1446.      = G 128x48     8x16 1024x768    256      .   A000 ATI VGA Wonder Plus,ATI XL
  1447.      = G 160x64     8x16 1280x1024     16/256K  .   A000 WD90C [1]
  1448.      = G 160x64     8x16 1280x1024     16/256K  .   A000 Diamond Speedstar 24X [1]
  1449.  65h = G    .      .    800x600    64K      .   A000 Cirrus CL-GD 5422/5426
  1450.      = G    .      .   1024x768     16      .    .  Video7 V-RAM VGA
  1451.      = G 128x48     8x16 1024x768     16      .   A000 ATI VGA Wonder
  1452.  66h = T  80x50     8x8   640x400     16/256K  .   B800 WD90C
  1453.      = T  80x50     8x8      .     16      .   B800 Diamond Speedstar 24X
  1454.      = G    .      .    640x400    256      .    .  Tatung VGA
  1455.      = G    .      .    640x400    256      .    .  Video7 V-RAM VGA
  1456.      = G    .      .    640x480    32K      .   A000 Cirrus CL-GD 5422/5426
  1457.  67h = T  80x43     8x8   640x344     16/256K  .   B800 WD90C
  1458.      = T  80x43     8x8      .     16      .   B800 Diamond Speedstar 24X
  1459.      = G    .      .    640x480    256      .    .  Video7 V-RAM VGA
  1460.      = G    .      .    800x600    32K      .   A000 Cirrus CL-GD 5422/5426
  1461.      = G 128x48     8x16 1024x768      4      .   A000 ATI VGA Wonder
  1462.      = G 160x64     8x16 1280x1024     16      .   A000 NCR 77C22 [1,9]
  1463.  68h = G  80x25     8x16  640x400      .      .   A000 Diamond Stealth64 Video 2xx1
  1464.  69h = T 132x50     8x8  1056x400     16/256K  .   B800 WD90C
  1465.      = T 132x50     8x8      .     16      .   B800 Diamond Speedstar 24X
  1466.      = G  80x30     8x16  640x480      .      .   A000 Diamond Stealth64 Video 2xx1
  1467.      = G    .      .    720x540    256      .   A000 Video7 V-RAM VGA
  1468.  6Ah = G    .      .    800x600     16      .   A000 VESA standard interface
  1469.      = G 100x75     8x8   800x600     16      .   A000 Genoa 6400
  1470.      = G 100x75     8x8   800x600     16      .   A000 Diamond Speedstar 24X
  1471.      = G    .      .    800x600     16      .   A000 Ahead A
  1472.      = G 100x75     8x8   800x600     16      1   A000 Ahead B (VESA) [see 71h]
  1473.      = G    .      .    800x600     16      .    .  Zymos Poach, Hi Res 512
  1474.      = G    .      .    800x600     16      .    .  Epson LT-386SX in CRT Mode
  1475.      = G    .      .    800x600     16      .    .  Compuadd 316SL in CRT Mode
  1476.      = G 100x37     8x16  800x600     16/256K  .   A000 Cirrus CL-GD5420/5422/5426
  1477.      = G 100x37     8x16  800x600     16      .   A000 Diamond Stealth64 Video 2xx1
  1478.      = G 100x42     8x14  800x600      .      .   A000 ATI VGA Wonder (undoc)
  1479.      = G    .      .    800x600     16      .   A000 Chips&Technologies chipset
  1480.      = G 160x64     8x16 1280x1024 256      .   A000 NCR 77C22 [1,9]
  1481.  6Bh = T 100x37     8x16      .     16      .    .  Genoa 6400
  1482.      = T 100x37     8x16      .      .      .    .  NEL Electronics BIOS
  1483.      = G 100x37     8x16  800x600      .      .   A000 Diamond Stealth64 Video 2xx1
  1484.  6Ch = G  80x30     8x16  640x480     16M      .   A000 Trident 8900CL/BIOS C04
  1485.      = G 100x75     8x8   800x600    256      .    .  Genoa 6400
  1486.      = G 128x48     8x16 1024x768      2      .   A000 Diamond Stealth64 Video 2xx1
  1487.      = G 160x60     8x16 1280x960     16/256K  .   A000 WD90C [1]
  1488.      = G 160x60     8x16 1280x960     16/256K  .   A000 Diamond Speedstar 24X [1]
  1489.      = G 160x64     8x16 1280x1024     16/256K  .   A000 Cirrus CL-GD 5422/5426 [1]
  1490.  6Dh = G  80x25     8x14  640x350     64K      .   A000 STB Lightspeed ET4000/W32P
  1491.      = G 128x48     8x16 1024x768      .      .   A000 Diamond Stealth64 Video 2xx1
  1492.      = G 160x64     8x16 1280x1024 256/256K  .   A000 Cirrus CL-GD 5422/5426 [1]
  1493.  6Eh = G  40x25     8x8   320x200     64K      .   A000 Cirrus CL-GD 5422/5426
  1494.      = G 160x64     8x16 1280x1024      2      .   A000 Diamond Stealth64 Video 2xx1
  1495.  6Fh = G  40x25     8x8   320x200     16M      .   A000 Cirrus CL-GD 5422/5426
  1496.      = G 160x64     8x16 1280x1024      .      .   A000 Diamond Stealth64 Video 2xx1
  1497.  70h =    extended mode set (see AX=0070h)    .  Everex Micro Enhancer EGA
  1498.      = T  40x25     8x8      .     16      8   B800 Quadram (CGA double scan)
  1499.      = T  40x25     8x8   (CGA dblscan)      .    .  Genoa SuperEGA BIOS 3.0+
  1500.      = G    .      .    360x480    256      .    .  Cirrus 510/520/5320 chips
  1501.      = G  90x28     8x14  720x392     16      1   A000 Ahead B
  1502.      = G  80x30     8x16  640x480      .      .   A000 Diamond Stealth64 Video 2xx1
  1503.      = G    .      .    800x600     16      .    .  C&T chipset, Cardinal
  1504.      = G    .      .   1024x480    256      .   A000 Trident 8900C BIOS C3.0
  1505.  71h = T  80x25     8x8      .     16      8   B800 Quadram (CGA double scan)
  1506.      = T  80x25     8x8   (CGA dblscan)      .    .  Genoa SuperEGA BIOS 3.0+
  1507.      = G    .      .    528x400    256      .    .  Cirrus 510/520 chipset
  1508.      = G  80x30     8x16  640x480     16M      .   A000 Cirrus CL-GD 5422/5426
  1509.      = G  80x30     8x16  640x480      .      .   A000 Diamond Stealth64 Video 2xx1
  1510.      = G 100x35     8x16  800x600     16/64      .   A000 NSI Smart EGA+
  1511.      = G 100x75     8x8   800x600     16      1   A000 Ahead B (same as 6Ah)
  1512.      = G    .      .    960x720     16      .    .  C&T chipset, Cardinal
  1513.      = G    .      .   1024x480    256      .   A000 Trident 8900C BIOS C3.0
  1514.  72h = T  80x60     8x8      .     16      .   B800 Quadram Ultra VGA
  1515.      = T  80x60     8x8      .     16      .   B800 Genoa 6400
  1516.      = T  80x60     8x8      .     16      .   B800 Genoa SuperEGA BIOS 3.0+
  1517.      = G    .      .    528x480    256      .    .  Cirrus 510/520 chipset
  1518.      = G  80x25     8x19  640x480     16      1   A000 DOS/V w/ any VGA
  1519.      = G  80x30     8x16  640x480      .      .   A000 Diamond Stealth64 Video 2xx1
  1520.      = G    .      .    640x480    32K      .   A000 ATI
  1521.      = G    .      .    640x480    16M      .   A000 WD90C
  1522.      = G    .      .    640x480    16M      .   A000 Diamond Speedstar 24X
  1523.      = G    .      .   1024x768     16      .    .  C&T chipset, Cardinal
  1524.  73h = G  80x60     8x8   640x480     16      .   A000 Quadram Ultra VGA
  1525.      = G  80x60     8x8   640x480     16      .    .  Genoa 6400
  1526.      = G  80x60     8x8   640x480     16      .    .  Genoa SuperEGA BIOS 3.0+
  1527.      = G 100x37     8x16  800x600      .      .   A000 Diamond Stealth64 Video 2xx1
  1528.      = T  80x25     8x19  640x475     16      1   none DOS/V, emulated in VGA graph
  1529.  74h = T  80x66     8x8      .     16      .   B800 Quadram Ultra VGA
  1530.      = T  80x66     8x8      .     16      .   B800 Genoa 6400
  1531.      = T  80x66     8x8      .     16      .   B800 Genoa SuperEGA BIOS 3.0+
  1532.      = G    .      .    640x400      2      .   B800 Toshiba 3100 AT&T mode
  1533.      = G  80x30     8x16  640x480     32K      .   A000 Trident 8900C/BIOS C03
  1534.      = G 100x37     8x16  800x600      .      .   A000 Diamond Stealth64 Video 2xx1
  1535.      = G 128x48     8x16 1024x768     16      1   A000 Ahead A, Ahead B (512K)
  1536.      = G    .      .   1024x768     64K      .   A000 Cirrus CL-GD 5422/5426 [1]
  1537.  75h = G  80x30     8x16  640x480     64K      .   A000 Trident 8900C/BIOS C03
  1538.      = G  80x66      .    640x528     16???      .   A000 Quadram Ultra VGA
  1539.      = G  80x66      .    640x528     16      .    .  Genoa SuperEGA BIOS 3.0+
  1540.      = G 100x37     8x16  800x600      .      .   A000 Diamond Stealth64 Video 2xx1
  1541.      = G 128x48     8x16 1024x768      4      1   A000 Ahead B
  1542.  76h = T  94x29     8x14      .     16      .   B800 Quadram Ultra VGA
  1543.      = T  94x29     8x14      .      .      .    .  Genoa SuperEGA BIOS 3.0+
  1544.      = G 100x75     8x8   800x600     32K      .   A000 Trident 8900C/BIOS C03
  1545.      = G 128x48     8x16 1024x768      2      1   A000 Ahead B
  1546.      = G 128x48     8x16 1024x768      .      .   A000 Diamond Stealth64 Video 2xx1
  1547.  77h = G  94x29      .    752x410     16???      .   A000 Quadram Ultra VGA
  1548.      = G  94x29      .    752x410     16      .    .  Genoa SuperEGA BIOS 3.0+
  1549.      = G 100x75     8x8   800x600     64K      .   A000 Trident 8900C/BIOS C03
  1550.      = G 128x48     8x16 1024x768      .      .   A000 Diamond Stealth64 Video 2xx1
  1551.  78h = T 100x37     8x16      .     16      .    .  Genoa 6400
  1552.      = T 100x75     8x8      .     16      .   B800 Quadram Ultra VGA
  1553.      = T 100x75     8x8      .      .      .    .  Genoa SuperEGA BIOS 3.0+
  1554.      = G    .      .    640x400    256      .    .  STB VGA/EM-16 Plus
  1555.      = G    .      .    640x400    256      .    .  Cardinal, C&T chipset
  1556.      = G    .      .    640x400    256      .    .  Cirrus 5320 chipset
  1557.  79h = G    .      .    640x480    256      .    .  Cardinal, C&T chipset
  1558.      = G 100x75      .    800x600     16???      .   A000 Quadram Ultra VGA
  1559.      = G 100x75     8x8   800x600     16      .    .  Genoa SuperEGA BIOS 3.0+
  1560.      = G 100x75     8x8   800x600     16      .    .  Genoa 6400
  1561.  7Ah = T 114x60     8x8      .     16      .   B800 Quadram Ultra VGA
  1562.      = T 114x60     8x8      .      .      .    .  Genoa SuperEGA BIOS 3.0+
  1563.      = G    .      .    720x540    256      .    .  C&T chipset, Cardinal
  1564.  7Bh = G    .      .    800x600    256      .    .  C&T chipset, Cardinal
  1565.      = G 114x60      .    912x480     16???      .   A000 Quadram Ultra VGA
  1566.      = G    .      .    912x480     16      .    .  Genoa SuperEGA BIOS 3.0+
  1567.  7Ch = G    .      .    512x512     16      .    .  Genoa
  1568.      = G    .      .    800x600    256      .    .  C&T 82C453 chipset
  1569.      = G 200x75     8x16 1600x1200      . [16]  .   A000 Diamond Stealth64 Video 2xx1
  1570.  7Dh = G  64x32     8x16  512x512    256      .    .  Genoa
  1571.  7Eh =    special mode set (see AX=007Eh)        .  Paradise VGA, AT&T VDC600
  1572.      = G  80x25     8x16  640x400    256      .    .  Genoa 6400
  1573.      = G    .      .   1024x768    256      .    .  C&T 82C453 chipset
  1574.      = G  90x43      .      .    mono      .   B000 HERCULES.COM on HGC [14]
  1575.  7Fh =    special function set (see AX=007Fh/BH=00h) Paradise VGA, AT&T VDC600
  1576.      = G 128x48     8x16 1024x768      4      .    .  Genoa 6400
  1577.      = G  90x29      .      .    mono      .   B000 HERCULES.COM on HGC [14]
  1578.  82h = T  80x25      .      .    B&W      .    .  AT&T VDC overlay mode [6]
  1579.  83h = T  80x25      .      .      .      .    .  AT&T VDC overlay mode [6]
  1580.  86h = G    .      .    640x200    B&W      .    .  AT&T VDC overlay mode [6]
  1581.  88h = G  90x43     8x8   720x348    mono      .   B000 Hercules + MSHERC.COM
  1582.  C0h = G    .      .    640x400    2/prog palette    .  AT&T VDC overlay mode [6]
  1583.      = G    .      .    640x400    2/prog palette    .  Olivetti Quaderno overlay
  1584.  C4h =    disable output      .      .      .    .  AT&T VDC overlay mode [6]
  1585.  C8h = G  80x50     8x8   640x400      2      .   B800 Olivetti Quaderno overlay
  1586.  D0h = G    .      .    640x400      2      .   B800 DEC VAXmate AT&T mode
  1587. Notes:
  1588. [1] interlaced only
  1589. [2] for ATI EGA Wonder, mode 08h is only valid if SMS.COM is loaded resident.
  1590.       SMS maps mode 08h to mode 27h if the byte at location 0040:0063 is 0B4h,
  1591.       otherwise to mode 23h, thus selecting the appropriate (monochrome or
  1592.       color) 132x25 character mode.
  1593.     for ATI VGA Wonder, mode 08h is the same, and only valid if VCONFIG loaded
  1594.       resident
  1595. [3] early XGA boards support 132-column text but do not have this BIOS mode
  1596. [4] DESQview intercepts calls to change into these two modes (21h is page 0,
  1597.       22h is page 1) even if there is no Hercules graphics board installed
  1598. [5] ATI BIOS v4-1.00 has a text-scrolling bug in this mode
  1599. [6] for AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h,
  1600.       40h, or 44h
  1601. [7] BIOS text support is broken in this undocumented mode; scrolling moves
  1602.       only about 1/3 of the screen (and does even that portion incorrectly),
  1603.       while screen clears only clear about 3/4.
  1604. [8] The Oak OTI-037/067/077 modes are present in the Oak VGA BIOS, which OEMs
  1605.       may choose to use only partially or not at all; thus, not all Oak boards
  1606.       support all "Oak" modes listed here
  1607. [9] this card uses the full 128K A000h-BFFFh range for the video buffer,
  1608.       precluding the use of a monochrome adapter in the same system
  1609. [10] mode 17h supported by Tseng ET4000 BIOS 8.01X dated 09/14/90, but not
  1610.       v8.01X dated 02/28/92; mode 21h supported by 02/28/92 version but not
  1611.       09/14/90 version
  1612. [11] HERKULES simulates a 90x45 text mode in Hercules graphics mode; the
  1613.       installation check for HERKULES.COM is the signature "Herkules" two
  1614.       bytes beyond the INT 10 handler
  1615. [12] The Realtek RTVGA BIOS v3.C10 crashes when attempting to switch into
  1616.       modes 21h or 27h; this version of the BIOS also sets the BIOS data area
  1617.       incorrectly for extended text modes, resulting in scrolling after only
  1618.       24 lines (the VMODE.EXE    utility does set the data area correctly)
  1619. [13] The Tandy 1000SL/TL BIOS does not actually support this mode
  1620. [14] HERCULES.COM is a graphics-mode BIOS extension for Hercules-compatible
  1621.       graphics cards by Soft Warehouse, Inc.  Its installation check is to
  1622.       test whether the word preceding the INT 10 handler is 4137h.
  1623. [15] The Hercules-graphics video modes for HERCBIOS (shareware by Dave
  1624.       Tutelman) may be changed by a command-line switch; the 90x43
  1625.       character-cell mode's number is always one higher than the 90x29 mode
  1626.       (whose default is mode 08h)
  1627. [16] Stealth64 Video 2001-series BIOS v1.03 reports 76 lines for mode 7Ch,
  1628.       resulting in incorrect scrolling for TTY output (scrolling occurs only
  1629.       after the end of the 76th line, which is not displayed)
  1630. [17] For 43-line text on EGA or 43/50-line text on VGA, you must load an 8x8
  1631.       font using AX=1102h after switching to mode 3; VGA may also require
  1632.       using INT 10/AH=12h/BL=30h
  1633. SeeAlso: #0010,#0081,#0123
  1634. Index:    video modes
  1635. Index:    installation check;HERKULES|installation check;HERCULES.COM
  1636. --------V-100070-----------------------------
  1637. INT 10 - VIDEO - Everex Micro Enhancer EGA/Viewpoint VGA - EXTENDED MODE SET
  1638.     AX = 0070h
  1639.     BL = mode (see #0010)
  1640. Desc:    specify a proprietary display mode on the Everex Micro Enhancer or
  1641.       Viewpoint video adapters
  1642. SeeAlso: AH=00h,AX=6F05h,AX=7000h/BX=0004h,AH=FFh"GO32"
  1643.  
  1644. (Table 0010)
  1645. Values for Everex video mode:
  1646.      text/ text pixel    pixel    colors disply scrn monitor    adapter
  1647.      grph resol     box  resolution       pages  addr
  1648.  00h = G    .      .    640x480     16      .    .  multisync  EGA,VGA
  1649.  01h = G    .      .    752x410     16      .    .  multisync  EGA,VGA
  1650.  02h = G    .      .    800x600     16      .    .  multisync  EGA,VGA
  1651.  03h = T  80x34      .      .      .      .    .  multisync  EGA,VGA
  1652.  04h = T  80x60      .      .      .      .    .  multisync  EGA,VGA
  1653.  05h = T  94x29      .      .      .      .    .  multisync  EGA only
  1654.  06h = T  94x51      .      .      .      .    .  multisync  EGA only
  1655.  07h = T 100x43     8x14      .     16      .    .  .          VGA only
  1656.  08h = T 100x75     8x8      .     16      .    .  .          VGA only
  1657.  09h = T  80x44      .      .      .      .    .  EGA          EGA only
  1658.  0Ah = T 132x25      .      .      .      .    .  EGA          EGA,VGA
  1659.  0Bh = T 132x44      .      .      .      .    .  EGA          EGA,VGA
  1660.  0Ch = T 132x25      .      .      .      .    .  CGA          EGA only
  1661.  0Dh = T  80x44      .      .      .      .    .  mono          EGA only
  1662.  0Eh = T 132x25      .      .      .      .    .  mono
  1663.  0Fh = T 132x44      .      .      .      .    .  mono
  1664.  10h =    reserved
  1665.  11h = G    .      .   1280x350      4      .    .  .          EGA only
  1666.  12h = G    .      .   1280x600      4      .    .  .          EGA only
  1667.  13h = G    .      .    640x350    256      .    .  .          EGA,EV673
  1668.  14h = G    .      .    640x400    256      .    .  .
  1669.  15h = G    .      .    512x480    256      .    .  .
  1670.  16h = T  80x30     8x16      .    256      .    .  .          VGA only
  1671.  18h = T 100x27     8x16      .     16      .    .  .          VGA only
  1672.  20h = G    .      .   1024x768     16      .    .  .          Everex 629,678
  1673.         .      .      .      .      .    .  .          Everex EV-673
  1674.  21h = T 160x64     8x16 1280x1024     16      .    .  .          1MB VGA only
  1675.  30h = G    .      .    640x480    256      .    .  .          Everex 629,678
  1676.         .      .      .      .      .    .  .          Everex EV-673
  1677.  31h = G    .      .    800x600    256      .    .  .          Everex 629,678
  1678.         .      .      .      .      .    .  .          Everex EV-673
  1679.  32h = G 128x48     8x16 1024x768    256      .    .  .          1MB VGA only
  1680.  40h = T 132x30     8x16      .     16      .    .  .          VGA only
  1681.  50h = T 132x32     8x16      .    mono      .    .  .          VGA only
  1682.  62h = G  40x25     8x8   320x200    32K      .    .  .          Vwpt TC (EV629)
  1683.  70h = G  64x30     8x16  512x480    32K      .    .  .          Viewpoint TC
  1684.  71h = G  80x30     8x16  640x480    32K      .    .  .          Viewpoint TC
  1685.  76h = G  64x30     8x16  512x480    16M      .    .  .          Viewpoint TC
  1686.  77h = G  80x30     8x16  640x480    16M      .    .  .          Viewpoint TC
  1687. SeeAlso: #0009,#0123
  1688. Index:    video modes;Everex
  1689. --------V-10007E-----------------------------
  1690. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET SPECIAL MODE
  1691.     AX = 007Eh
  1692.     BX = horizontal dimension of the mode desired
  1693.     CX = vertical dimension of the mode desired
  1694.         (both BX/CX in pixels for graphics modes, rows for alpha modes)
  1695.     DX = number of colors of the mode desired (0000h for monochrome modes)
  1696. Return: BH = 7Eh if successful (Paradise VGA)
  1697.     AL = 7Eh if successful (AT&T VDC600)
  1698. Desc:    specify a display mode by resolution rather than mode number
  1699. SeeAlso: AH=00h,AX=0070h,AX=007Fh/BH=00h,AX=6F05h,AH=FFh"GO32"
  1700. Index:    video modes;Paradise|video modes;AT&T
  1701. --------V-10007FBH00-------------------------
  1702. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET VGA OPERATION
  1703.     AX = 007Fh
  1704.     BH = 00h
  1705. Return: AL = 7Fh if successful (AT&T VDC600)
  1706.     BH = status (Paradise/Dell)
  1707.         00h invalid function
  1708.         7Fh successful
  1709. SeeAlso: AX=007Fh/BH=01h,AX=007Fh/BH=02h
  1710. --------V-10007FBH01-------------------------
  1711. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET NON-VGA OPERATION
  1712.     AX = 007Fh
  1713.     BH = 01h
  1714. Return: AL = 7Fh if successful (AT&T VDC600)
  1715.     BH = status (Paradise/Dell)
  1716.         00h invalid function
  1717.         7Fh successful
  1718. Note:    color modes (0,1,2,3,4,5,6) will set non-VGA CGA operation, monochrome
  1719.       mode 7 will set non-VGA MDA/Hercules operation
  1720. SeeAlso: AX=007Fh/BH=00h,AX=007Fh/BH=02h
  1721. --------V-10007FBH02-------------------------
  1722. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - QUERY MODE STATUS
  1723.     AX = 007Fh
  1724.     BH = 02h
  1725. Return: AL = 7Fh if successful (AT&T VDC600)
  1726.     BH = status (Paradise/Dell)
  1727.         00h invalid function
  1728.         7Fh successful
  1729.     ---if successful---
  1730.     BL = 00h if operating in VGA mode, 01h if non-VGA mode
  1731.     CH = total video RAM size in 64k byte units
  1732.     CL = video RAM used by the current mode
  1733. Note:    under Novell DOS 7 TaskMgr Multitasker, this call always returns 0K
  1734.       video memory in CX
  1735. SeeAlso: AX=007Fh/BH=00h,AX=007Fh/BH=01h
  1736. --------V-10007FBH03-------------------------
  1737. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - LOCK CURRENT MODE
  1738.     AX = 007Fh
  1739.     BH = 03h
  1740. Return: AL = 7Fh if successful (AT&T VDC600)
  1741.     BH = status (Paradise/Dell)
  1742.         00h invalid function
  1743.         7Fh successful
  1744. Desc:    allows current mode (VGA or non-VGA) to survive re-boot
  1745. SeeAlso: AX=007Eh,AX=007Fh/BH=04h,AX=007Fh/BH=06h,AH=FFh"Oak"
  1746. --------V-10007FBH04-------------------------
  1747. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER MDA EMULATION MODE
  1748.     AX = 007Fh
  1749.     BH = 04h
  1750. Return: AL = 7Fh if successful (AT&T VDC600)
  1751.     BH = status (Paradise/Dell)
  1752.         00h invalid function
  1753.         7Fh successful
  1754. SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=05h,AH=FFh"Oak"
  1755. --------V-10007FBH05-------------------------
  1756. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER CGA EMULATION MODE
  1757.     AX = 007Fh
  1758.     BH = 05h
  1759. Return: AL = 7Fh if successful (AT&T VDC600)
  1760.     BH = status (Paradise/Dell)
  1761.         00h invalid function
  1762.         7Fh successful
  1763. SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=04h,AH=FFh"Oak"
  1764. --------V-10007FBH06-------------------------
  1765. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER MONOCHROME VGA MODE
  1766.     AX = 007Fh
  1767.     BH = 06h
  1768. Return: AL = 7Fh if successful (AT&T VDC600)
  1769.     BH = status (Paradise/Dell)
  1770.         00h invalid function
  1771.         7Fh successful
  1772. Note:    this function also switches to video mode 7
  1773. SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=07h,AH=FFh"Oak"
  1774. --------V-10007FBH07-------------------------
  1775. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER COLOR VGA MODE
  1776.     AX = 007Fh
  1777.     BH = 07h
  1778. Return: AL = 7Fh if successful (AT&T VDC600)
  1779.     BH = status (Paradise/Dell)
  1780.         00h invalid function
  1781.         7Fh successful
  1782. Note:    this function also switches to video mode 3
  1783. SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=06h,AH=FFh"Oak"
  1784. --------V-10007F-----------------------------
  1785. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - EXTENDED DATA REGISTER ACCESS
  1786.     AX = 007Fh
  1787.     BH = function
  1788.         0Ah,0Bh,0Ch,0Dh,0Eh,0Fh  WRITE PARADISE REGISTERS 0,1,2,3,4,5
  1789.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  1790.         BL = value to set in the paradise register
  1791.         1Ah,1Bh,1Ch,1Dh,1Eh,1Fh READ PARADISE REGISTERS 0,1,2,3,4,5
  1792.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  1793.         Return: BL = value of the paradise register
  1794.             BH = 7Fh if successful
  1795.         29h-2Fh ??? (Paradise VGA for Dell, 7/24/91)
  1796. Return: AL = 7Fh if successful (AT&T VDC600)
  1797.     BH = status (Paradise/Dell)
  1798.         00h invalid function
  1799.         7Fh successful
  1800. SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=05h,AH=FFh"Oak"
  1801. --------V-10007FBH60-------------------------
  1802. INT 10 - Paradise VGA - ???
  1803.     AX = 007Fh
  1804.     BH = 60h
  1805.     BL = ??? (00h-13h)
  1806.     ???
  1807. Return: BH = status (00h failed or not supported, 7Fh successful)
  1808.     ???
  1809. Note:    this function is supported by the 5/14/93 ROM for the Dell 486D
  1810. SeeAlso: AX=007Fh/BH=61h
  1811. --------V-10007FBH61-------------------------
  1812. INT 10 - Paradise VGA - ???
  1813.     AX = 007Fh
  1814.     BH = 61h
  1815.     ES:DI -> buffer for list of ??? (see #0011)
  1816. Return: BH = status (00h failed or not supported, 7Fh successful)
  1817.     ???
  1818. Note:    this function is supported by the 5/14/93 ROM for the Dell 486D
  1819. SeeAlso: AX=007Fh/BH=60h
  1820.  
  1821. Format of Paradise VGA list entry:
  1822. Offset    Size    Description    (Table 0011)
  1823.  00h    BYTE    ??? or 00h if end of list
  1824.  01h    BYTE    ???
  1825.  02h    WORD    ???
  1826.  04h    WORD    ???
  1827.  06h    WORD    ???
  1828. --------V-10007FBXA500-----------------------
  1829. INT 10 - Paradise VGA - ???
  1830.     AX = 007Fh
  1831.     BX = A500h
  1832.     ???
  1833. Return: BH = status (00h failed or not supported, 7Fh successful)
  1834.     ???
  1835. Note:    this function is supported by the 5/14/93 ROM for the Dell 486D
  1836. SeeAlso: AX=007Fh/BH=A6h
  1837. --------V-10007FBHA5-------------------------
  1838. INT 10 - Paradise VGA - ???
  1839.     AX = 007Fh
  1840.     BH = A5h
  1841.     BL = ???
  1842.         bits 3-0: ??? (0-4)
  1843.         bits 5,4: ???
  1844.     ???
  1845. Return: BH = status (00h failed or not supported, 7Fh successful)
  1846.     ???
  1847. Note:    this function is supported by the 5/14/93 ROM for the Dell 486D
  1848. --------V-10007FBHA6-------------------------
  1849. INT 10 - Paradise VGA - ???
  1850.     AX = 007Fh
  1851.     BH = A6h
  1852.     ???
  1853. Return: BH = status (00h failed or not supported, 7Fh successful)
  1854.     ???
  1855. Note:    this function is supported by the 5/14/93 ROM for the Dell 486D
  1856. SeeAlso: AX=007Fh/BH=A5h
  1857. --------V-1001-------------------------------
  1858. INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
  1859.     AH = 01h
  1860.     CH = cursor start and options (see #0012)
  1861.     CL = bottom scan line containing cursor (bits 0-4)
  1862. Return: nothing
  1863. Desc:    specify the starting and ending scan lines to be occupied by the
  1864.       hardware cursor in text modes
  1865. Notes:    buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but
  1866.       returns unmapped cursor shape
  1867.     UltraVision scales size to the current font height by assuming 14-line
  1868.       monochrome and 8-line color fonts; this call is not valid if cursor
  1869.       emulation has been disabled
  1870.     applications which wish to change the cursor by programming the
  1871.       hardware directly on EGA or above should call INT 10/AX=1130h or
  1872.       read 0040h:0085h first to determine the current font height
  1873.     on some adapters, setting the end line greater than the number of lines
  1874.       in the font will result in the cursor extending to the top of the
  1875.       next character cell on the right
  1876. BUG:    AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
  1877.       is not equal to the current video mode
  1878. SeeAlso: AH=03h,AX=CD05h,AH=12h/BL=34h,#3556
  1879.  
  1880. Bitfields for cursor start and options:
  1881. Bit(s)    Description    (Table 0012)
  1882.  7    should be zero
  1883.  6,5    cursor blink
  1884.     (00=normal, 01=invisible, 10=erratic, 11=slow)
  1885.     (00=normal, other=invisible on EGA/VGA)
  1886.  4-0    topmost scan line containing cursor
  1887. --------V-1002-------------------------------
  1888. INT 10 - VIDEO - SET CURSOR POSITION
  1889.     AH = 02h
  1890.     BH = page number
  1891.         0-3 in modes 2&3
  1892.         0-7 in modes 0&1
  1893.         0 in graphics modes
  1894.     DH = row (00h is top)
  1895.     DL = column (00h is left)
  1896. Return: nothing
  1897. SeeAlso: AH=03h,AH=05h,INT 60/DI=030Bh,MEM 0040h:0050h
  1898. --------V-1003-------------------------------
  1899. INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
  1900.     AH = 03h
  1901.     BH = page number
  1902.         0-3 in modes 2&3
  1903.         0-7 in modes 0&1
  1904.         0 in graphics modes
  1905. Return: AX = 0000h (Phoenix BIOS)
  1906.     CH = start scan line
  1907.     CL = end scan line
  1908.     DH = row (00h is top)
  1909.     DL = column (00h is left)
  1910. Notes:    a separate cursor is maintained for each of up to 8 display pages
  1911.     many ROM BIOSes incorrectly return the default size for a color display
  1912.       (start 06h, end 07h) when a monochrome display is attached
  1913. SeeAlso: AH=01h,AH=02h,AH=12h/BL=34h,MEM 0040h:0050h,MEM 0040h:0060h
  1914. --------V-1004-------------------------------
  1915. INT 10 - VIDEO - READ LIGHT PEN POSITION (except VGA)
  1916.     AH = 04h
  1917. Return: AH = light pen trigger flag
  1918.         00h not down/triggered
  1919.         01h down/triggered
  1920.         DH,DL = row,column of character light pen is on
  1921.         CH = pixel row (graphics modes 04h-06h)
  1922.         CX = pixel row (graphics modes with >200 rows)
  1923.         BX = pixel column
  1924. Desc:    determine the current position and status of the light pen (if
  1925.       present)
  1926. Notes:    on a CGA, returned column numbers are always multiples of 2 (320-
  1927.       column modes) or 4 (640-column modes)
  1928.     returned row numbers are only accurate to two lines
  1929. --------V-1004------------------------------------
  1930. INT 10 - HUNTER 16 - GET CURSOR ADDRESS
  1931.     AH = 04h
  1932.     BH = page
  1933. Return: DH = row (0..24)
  1934.     DL = column (0..79)
  1935.     CH = cursor pixel Y-address (0..199)
  1936.     CL = cursor pixel X-address (0..639)
  1937. Notes:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  1938.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  1939.     pixel coordinates are for the lower left corner of the character cell
  1940.       containing the cursor
  1941. SeeAlso: AH=60h"HUNTER"
  1942. --------V-1005-------------------------------
  1943. INT 10 - VIDEO -  SELECT ACTIVE DISPLAY PAGE
  1944.     AH = 05h
  1945.     AL = new page number (00h to number of pages - 1) (see #0009)
  1946. Return: nothing
  1947. Desc:    specify which of possibly multiple display pages will be visible
  1948. Note:    to determine whether the requested page actually exists, use AH=0Fh
  1949.       to query the current page after making this call
  1950. SeeAlso: AH=0Fh,AH=43h,AH=45h,MEM 0040h:0062h,MEM 0040h:004Eh
  1951. --------V-100500-----------------------------
  1952. INT 10 - VIDEO - Corona/Cordata BIOS v4.10+ - SET GRAPHICS BITMAP BUFFER
  1953.     AX = 0500h
  1954.     BX = segment of buffer
  1955. Return: nothing
  1956. Desc:    set the address of graphics bitmap buffer for video modes 60h and 61h
  1957. SeeAlso: AX=050Fh"Corona"
  1958. --------V-10050F-----------------------------
  1959. INT 10 - VIDEO - Corona/Cordata BIOS v4.10+ - GET GRAPHICS BITMAP BUFFER
  1960.     AX = 050Fh
  1961. Return: DX = segment of graphics bitmap buffer
  1962. Desc:    get the address of graphics bitmap buffer for video modes 60h and 61h
  1963. SeeAlso: AX=0500h"Corona"
  1964. --------V-100580-----------------------------
  1965. INT 10 - VIDEO - PCjr, Tandy 1000 - GET CRT/CPU PAGE REGISTERS
  1966.     AX = 0580h
  1967. Return: BH = CRT page register
  1968.     BL = CPU page register
  1969. Notes:    the CPU page determines which 16K block of the first 128K of physical
  1970.       memory will be mapped at B800h by the hardware
  1971.     the CRT page determines the start address of the memory used by the
  1972.       video controller
  1973. SeeAlso: AH=05h"SET CRT/CPU"
  1974. --------V-1005-------------------------------
  1975. INT 10 - VIDEO - PCjr, Tandy 1000 - SET CRT/CPU PAGE REGISTERS
  1976.     AH = 05h
  1977.     AL = subfunction
  1978.         81h set CPU page register
  1979.         BL = CPU page
  1980.         82h set CRT page register
  1981.         BH = CRT page
  1982.         83h set both CPU and CRT page registers
  1983.         BL = CPU page
  1984.         BH = CRT page
  1985. Return: nothing
  1986. Notes:    the CPU page determines which 16K block of the first 128K of physical
  1987.       memory will be mapped at B800h by the hardware
  1988.     the CRT page determines the start address of the memory used by the
  1989.       video controller
  1990. SeeAlso: AX=0580h
  1991. --------V-1006-------------------------------
  1992. INT 10 - VIDEO - SCROLL UP WINDOW
  1993.     AH = 06h
  1994.     AL = number of lines by which to scroll up (00h = clear entire window)
  1995.     BH = attribute used to write blank lines at bottom of window
  1996.     CH,CL = row,column of window's upper left corner
  1997.     DH,DL = row,column of window's lower right corner
  1998. Return: nothing
  1999. Note:    affects only the currently active page (see AH=05h)
  2000. BUGS:    some implementations (including the original IBM PC) have a bug which
  2001.       destroys BP
  2002.     the Trident TVGA8900CL (BIOS dated 9/8/92) clears DS to 0000h when
  2003.       scrolling in an SVGA mode (800x600 or higher)
  2004. SeeAlso: AH=07h,AH=12h"Tandy 2000",AH=72h,AH=73h,AX=7F07h,INT 50/AX=0014h
  2005. --------V-1007-------------------------------
  2006. INT 10 - VIDEO - SCROLL DOWN WINDOW
  2007.     AH = 07h
  2008.     AL = number of lines by which to scroll down (00h=clear entire window)
  2009.     BH = attribute used to write blank lines at top of window
  2010.     CH,CL = row,column of window's upper left corner
  2011.     DH,DL = row,column of window's lower right corner
  2012. Return: nothing
  2013. Note:    affects only the currently active page (see AH=05h)
  2014. BUGS:    some implementations (including the original IBM PC) have a bug which
  2015.       destroys BP
  2016.     the Trident TVGA8900CL (BIOS dated 9/8/92) clears DS to 0000h when
  2017.       scrolling in an SVGA mode (800x600 or higher)
  2018. SeeAlso: AH=06h,AH=12h"Tandy 2000",AH=72h,AH=73h,INT 50/AX=0014h
  2019. --------V-1008-------------------------------
  2020. INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  2021.     AH = 08h
  2022.     BH = page number (00h to number of pages - 1) (see #0009)
  2023. Return: AH = character's attribute (text mode only) (see #0013)
  2024.     AH = character's color (Tandy 2000 graphics mode only)
  2025.     AL = character
  2026. Notes:    for monochrome displays, a foreground of 1 with background 0 is
  2027.       underlined
  2028.     the blink bit may be reprogrammed to enable intense background colors
  2029.       using AX=1003h or by programming the CRT controller
  2030.     the foreground intensity bit (3) can be programmed to switch between
  2031.       character sets A and B on EGA and VGA cards, thus enabling 512
  2032.       simultaneous characters on screen.  In this case the bit's usual
  2033.       function (intensity) is regularly turned off.
  2034.     in graphics modes, only characters drawn with white foreground pixels
  2035.       are matched by the pattern-comparison routine
  2036.     on the Tandy 2000, BH=FFh specifies that the current page should be
  2037.       used
  2038. SeeAlso: AH=09h,AX=1003h,AX=1103h,AH=12h/BL=37h,AX=5001h
  2039.  
  2040. Bitfields for character's display attribute:
  2041. Bit(s)    Description    (Table 0013)
  2042.  7    foreground blink or (alternate) background bright (see also AX=1003h)
  2043.  6-4    background color (see #0014)
  2044.  3    foreground bright or (alternate) alternate character set (see AX=1103h)
  2045.  2-0    foreground color (see #0014)
  2046. SeeAlso: #0025
  2047.  
  2048. (Table 0014)
  2049. Values for character color:
  2050.     Normal        Bright
  2051.  000b    black        dark gray
  2052.  001b    blue        light blue
  2053.  010b    green        light green
  2054.  011b    cyan        light cyan
  2055.  100b    red        light red
  2056.  101b    magenta        light magenta
  2057.  110b    brown        yellow
  2058.  111b    light gray    white
  2059. --------V-1009-------------------------------
  2060. INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  2061.     AH = 09h
  2062.     AL = character to display
  2063.     BH = page number (00h to number of pages - 1) (see #0009)
  2064.         background color in 256-color graphics modes (ET4000)
  2065.     BL = attribute (text mode) or color (graphics mode)
  2066.         if bit 7 set in <256-color graphics mode, character is XOR'ed
  2067.           onto screen
  2068.     CX = number of times to write character
  2069. Return: nothing
  2070. Notes:    all characters are displayed, including CR, LF, and BS
  2071.     replication count in CX may produce an unpredictable result in graphics
  2072.       modes if it is greater than the number of positions remaining in the
  2073.       current row
  2074. SeeAlso: AH=08h,AH=0Ah,AH=4Bh"GRAFIX",INT 17/AH=60h,INT 1F"SYSTEM DATA"
  2075. SeeAlso: INT 43"VIDEO DATA",INT 44"VIDEO DATA"
  2076. --------V-100A-------------------------------
  2077. INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
  2078.     AH = 0Ah
  2079.     AL = character to display
  2080.     BH = page number (00h to number of pages - 1) (see #0009)
  2081.         background color in 256-color graphics modes (ET4000)
  2082.     BL = attribute (PCjr, Tandy 1000 only) or color (graphics mode)
  2083.         if bit 7 set in <256-color graphics mode, character is XOR'ed
  2084.           onto screen
  2085.     CX = number of times to write character
  2086. Return: nothing
  2087. Notes:    all characters are displayed, including CR, LF, and BS
  2088.     replication count in CX may produce an unpredictable result in graphics
  2089.       modes if it is greater than the number of positions remaining in the
  2090.       current row
  2091. SeeAlso: AH=08h,AH=09h,AH=11h"Tandy 2000",AH=4Bh,INT 17/AH=60h
  2092. SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA",INT 44"VIDEO DATA"
  2093. --------V-100B--BH00-------------------------
  2094. INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
  2095.     AH = 0Bh
  2096.     BH = 00h
  2097.     BL = background/border color (border only in text modes)
  2098. Return: nothing
  2099. SeeAlso: AH=0Bh/BH=01h
  2100. --------V-100B--BH01-------------------------
  2101. INT 10 - VIDEO - SET PALETTE
  2102.     AH = 0Bh
  2103.     BH = 01h
  2104.     BL = palette ID
  2105.         00h background, green, red, and brown/yellow
  2106.         01h background, cyan, magenta, and white
  2107. Return: nothing
  2108. Note:    this call was only valid in 320x200 graphics on the CGA, but newer
  2109.       cards support it in many or all graphics modes
  2110. SeeAlso: AH=0Bh/BH=00h,MEM 0040h:0066h
  2111. --------V-100B--BH02-------------------------
  2112. INT 10 - Tandy 2000 - VIDEO - SET PALETTE ENTRY
  2113.     AH = 0Bh
  2114.     BH = 02h
  2115.     BL = palette entry number
  2116.     AL = new color value for palette entry
  2117. Return: nothing
  2118. Note:    this interrupt is identical to INT 52 for Tandy 2000
  2119. SeeAlso: INT 10/AH=00h,INT 10/AH=0Bh/BH=01h,INT 52"Tandy 2000"
  2120. --------V-100C-------------------------------
  2121. INT 10 - VIDEO - WRITE GRAPHICS PIXEL
  2122.     AH = 0Ch
  2123.     BH = page number
  2124.     AL = pixel color
  2125.         if bit 7 set, value is XOR'ed onto screen except in 256-color modes
  2126.     CX = column
  2127.     DX = row
  2128. Return: nothing
  2129. Desc:    set a single pixel on the display in graphics modes
  2130. Notes:    valid only in graphics modes
  2131.     BH is ignored if the current video mode supports only one page
  2132. SeeAlso: AH=0Dh,AH=46h
  2133. --------V-100D-------------------------------
  2134. INT 10 - VIDEO - READ GRAPHICS PIXEL
  2135.     AH = 0Dh
  2136.     BH = page number
  2137.     CX = column
  2138.     DX = row
  2139. Return: AL = pixel color
  2140. Desc:    determine the current color of the specified pixel in grahics modes
  2141. Notes:    valid only in graphics modes
  2142.     BH is ignored if the current video mode supports only one page
  2143. SeeAlso: AH=0Ch,AH=47h
  2144. --------V-100E-------------------------------
  2145. INT 10 - VIDEO - TELETYPE OUTPUT
  2146.     AH = 0Eh
  2147.     AL = character to write
  2148.     BH = page number
  2149.     BL = foreground color (graphics modes only)
  2150. Return: nothing
  2151. Desc:    display a character on the screen, advancing the cursor and scrolling
  2152.       the screen as necessary
  2153. Notes:    characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
  2154.       and do the expected things
  2155.     IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same as
  2156.       the current active page
  2157. SeeAlso: AH=02h,AH=0Ah
  2158. --------b-100E--CXABCD-----------------------
  2159. INT 10 - V20-XT-BIOS - TELETYPE OUTPUT WITH ATTRIBUTE
  2160.     AH = 0Eh
  2161.     CX = ABCDh
  2162.     BP = ABCDh
  2163.     AL = character to write
  2164.     BH = page number
  2165.     BL = foreground color (text modes as well as graphics modes)
  2166. Return: nothing
  2167. Program: V20-XT-BIOS is a ROM BIOS replacement with extensions by Peter
  2168.       Koehlmann / c't magazine
  2169. Desc:    display a character on the screen, advancing the cursor and scrolling
  2170.       the screen as necessary
  2171. Notes:    characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
  2172.       and do the expected things
  2173. SeeAlso: INT 15/AH=84h"V20-XT-BIOS"
  2174. --------V-100F-------------------------------
  2175. INT 10 - VIDEO - GET CURRENT VIDEO MODE
  2176.     AH = 0Fh
  2177. Return: AH = number of character columns
  2178.     AL = display mode (see #0009 at AH=00h)
  2179.     BH = active page (see AH=05h)
  2180. Notes:    if mode was set with bit 7 set ("no blanking"), the returned mode will
  2181.       also have bit 7 set
  2182.     EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  2183.       (monochrome) in all extended-row text modes
  2184.     HP 200LX returns AL=07h (monochrome) if mode was set to AL=21h
  2185.       and always 80 resp. 40 columns in all text modes regardless of
  2186.       current zoom setting (see AH=D0h)
  2187.     when using a Hercules Graphics Card, additional checks are necessary:
  2188.         mode 05h: if WORD 0040h:0063h is 03B4h, may be in graphics page 1
  2189.           (as set by DOSSHELL and other Microsoft software)
  2190.         mode 06h: if WORD 0040h:0063h is 03B4h, may be in graphics page 0
  2191.           (as set by DOSSHELL and other Microsoft software)
  2192.         mode 07h: if BYTE 0040h:0065h bit 1 is set, Hercules card is in
  2193.           graphics mode, with bit 7 indicating the page (mode set by
  2194.           Hercules driver for Borland Turbo C)
  2195.     the Tandy 2000 BIOS is only documented as returning AL, not AH or BH
  2196. SeeAlso: AH=00h,AH=05h,AX=10F2h,AX=1130h,AX=CD04h,MEM 0040h:004Ah
  2197. --------V-100F56BX4756-----------------------
  2198. INT 10 - VUIMAGE DISPLAY DRIVER (v2.20 and below)
  2199.     AX = 0F56h
  2200.     BX = 4756h
  2201.     CX = 4944h
  2202.     DL = function
  2203.         01h installation check
  2204.         Return: AX = 5649h
  2205.             BX = 4443h
  2206.             CX = 5647h
  2207.             DH = 01h
  2208.         02h get first video mode's parameters
  2209.         Return: AX = BIOS mode number
  2210.             BX = width in pixels
  2211.             CX = height in pixels
  2212.             DX = number of colors
  2213.         03h get next video mode's parameters
  2214.         Return: as for DL=02h
  2215.         04h display line???
  2216.         ES:DI -> record (see #0015)
  2217.         ???
  2218.         Return: ???
  2219. Program: VUIMAGE is a shareware GIF/TIFF image viewer by Offe Enterprises
  2220. Note:    the use of TSR display drivers was discontinued after v2.20
  2221. Index:    installation check;VUIMAGE display driver
  2222.  
  2223. Format of record for VUIMAGE Function 04h:
  2224. Offset    Size    Description    (Table 0015)
  2225.  00h    WORD    row number
  2226.  02h    WORD    starting column???
  2227.  04h    WORD    ending column???
  2228.     ???
  2229. --------V-100F--SIF123-----------------------
  2230. INT 10 - FRIEZE v7.41+ - INSTALLATION CHECK
  2231.     AH = 0Fh
  2232.     SI = F123h
  2233.     DI = 321Fh
  2234. Return: AH = number of character columns
  2235.     AL = display mode (see #0009 at AH=00h)
  2236.     BH = active page (see AH=05h)
  2237.     SI = DI = F345h if installed
  2238. Notes:    if mode was set with bit 7 set ("no blanking"), the returned mode will
  2239.       also have bit 7 set
  2240.     EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  2241.       (monochrome) in all extended-row text modes
  2242. SeeAlso: AH=0Fh"VIDEO",AH=4Bh"FRIEZE"
  2243. --------V-1010-------------------------------
  2244. INT 10 - BIOS Window Extension v1.1 - SET WINDOW COORDINATES
  2245.     AH = 10h
  2246.     CH,CL = row,column of upper left corner of window
  2247.     DH,DL = row,column of lower right corner of window
  2248. Return: AL = status
  2249.         00h successful
  2250.         01h failed
  2251.     AH destroyed
  2252. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  2253. Note:    when a window has been set, all output via AH=0Eh is restricted to
  2254.       the specified window
  2255. SeeAlso: AH=11h"Window",AH=12h"Window"
  2256. --------V-1010-------------------------------
  2257. INT 10 - VIDEO - Eagle PC2 BIOS Rev. C - SET SCROLL SPEED
  2258.     AH = 10h
  2259.     AL = speed
  2260.         00h fast
  2261.         01h slow (scrolling only moves characters during vertical retrace)
  2262. Return: AH = previous speed
  2263. --------V-1010-------------------------------
  2264. INT 10 - Tandy 2000 - VIDEO - GET/SET CHARACTER FONTS
  2265.     AH = 10h
  2266.     AL = control value
  2267.         bit 0: set character set instead of reading it
  2268.         bit 1: high 128 characters instead of low 128 characters
  2269.     ES:BX -> new character set if AL bit 0 set
  2270. Return: ES:BX -> current character set if AL bit 0 clear on entry
  2271. Notes:    this interrupt is identical to INT 52 on Tandy 2000
  2272.     the character set consists of 16 bytes for each of the 128 characters,
  2273.       where each of the 16 bytes describes the pixels in one scan line,
  2274.       most significant bit leftmost
  2275. SeeAlso: AH=00h,AH=0Bh/BH=02h,AH=11h"Tandy 2000",AH=12h"Tandy 2000"
  2276. SeeAlso: INT 52"Tandy 2000"
  2277. --------V-101000-----------------------------
  2278. INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,Tandy,EGA,MCGA,VGA)
  2279.     AX = 1000h
  2280.     BL = palette register number (00h-0Fh)
  2281.        = attribute register number (undocumented) (see #0016)
  2282.     BH = color or attribute register value
  2283. Return: nothing
  2284. Notes:    on MCGA, only BX = 0712h is supported
  2285.     under UltraVision, the palette locking status (see AX=CD01h)
  2286.       determines the outcome
  2287. SeeAlso: AX=1002h,AX=1007h,AX=CD01h
  2288.  
  2289. (Table 0016)
  2290. Values for attribute register number:
  2291.  10h    attribute mode control register (should let BIOS control this)
  2292.  11h    overscan color register (see also AX=1001h)
  2293.  12h    color plane enable register (bits 3-0 enable corresponding
  2294.       text attribute bit)
  2295.  13h    horizontal PEL panning register
  2296.  14h    color select register
  2297. --------V-101001-----------------------------
  2298. INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,Tandy,EGA,VGA)
  2299.     AX = 1001h
  2300.     BH = border color (00h-3Fh)
  2301. Return: nothing
  2302. BUG:    the original IBM VGA BIOS incorrectly updates the parameter save area
  2303.       and places the border color at offset 11h of the palette table
  2304.       rather than offset 10h
  2305. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  2306.       determines the outcome
  2307. SeeAlso: AX=1002h,AX=1008h,AX=CD01h
  2308. --------V-101002-----------------------------
  2309. INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,Tandy,EGA,VGA)
  2310.     AX = 1002h
  2311.     ES:DX -> palette register list (see #0017)
  2312.     BH = 00h to avoid problems on some adapters
  2313. Return: nothing
  2314. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  2315.       determines the outcome
  2316. SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
  2317.  
  2318. Format of palette register list:
  2319. Offset    Size    Description    (Table 0017)
  2320.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  2321.  10h    BYTE    border color
  2322. SeeAlso: #0387
  2323. --------V-101003-----------------------------
  2324. INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)
  2325.     AX = 1003h
  2326.     BL = new state
  2327.         00h background intensity enabled
  2328.         01h blink enabled
  2329.     BH = 00h to avoid problems on some adapters
  2330. Return: nothing
  2331. Notes:    although there is no function to get the current status on adapters
  2332.       prior to the VGA, bit 5 of 0040h:0065h indicates the state; on the
  2333.       VGA, use AH=1Bh and check offset 2Dh of the returned data (see #0038)
  2334.     when configured for a monochrome display, the Boca Research Multi-EGA
  2335.       with ROM v M1.1 Type D has its screen disrupted if BH is not clear
  2336.     this call is reported to be "Get Cursor Position" on the Tandy
  2337.       1000SL/TL
  2338. SeeAlso: AH=08h,AH=1Bh
  2339. --------V-101007-----------------------------
  2340. INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
  2341.     AX = 1007h
  2342.     BL = palette or attribute (undoc) register number (see #0016)
  2343. Return: BH = palette or attribute register value
  2344. Note:    UltraVision v2+ supports this function even on color EGA systems in
  2345.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  2346.       registers will cause incorrect results because the EGA registers are
  2347.       write-only.  To guard against older versions or unsupported video
  2348.       modes, programs which expect to use this function on EGA systems
  2349.       should set BH to FFh on entry.
  2350. SeeAlso: AX=1000h,AX=1009h
  2351. --------V-101008-----------------------------
  2352. INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision v2+)
  2353.     AX = 1008h
  2354. Return: BH = border color (00h-3Fh)
  2355. Note:    (see AX=1007h)
  2356. SeeAlso: AX=1001h
  2357. --------V-101009-----------------------------
  2358. INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
  2359.     AX = 1009h
  2360.     ES:DX -> 17-byte buffer for palette register list (see #0017)
  2361. Return: nothing
  2362. Note:    UltraVision v2+ supports this function even on color EGA systems in
  2363.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  2364.       registers will cause incorrect results because the EGA registers are
  2365.       write-only.  To guard against older versions or unsupported video
  2366.       modes, programs which expect to use this function on EGA systems
  2367.       should set the ES:DX buffer to FFh before calling.
  2368. SeeAlso: AX=1002h,AX=1007h,AX=CD02h
  2369. --------V-101010-----------------------------
  2370. INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
  2371.     AX = 1010h
  2372.     BX = register number
  2373.     CH = new value for green (0-63)
  2374.     CL = new value for blue (0-63)
  2375.     DH = new value for red (0-63)
  2376. Return: nothing
  2377. SeeAlso: AX=1012h,AX=1015h
  2378. --------V-101012-----------------------------
  2379. INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
  2380.     AX = 1012h
  2381.     BX = starting color register
  2382.     CX = number of registers to set
  2383.     ES:DX -> table of 3*CX bytes where each 3 byte group represents one
  2384.          byte each of red, green and blue (0-63)
  2385. Return: nothing
  2386. SeeAlso: AX=1010h,AX=1017h,INT 62/AX=00A5h
  2387. --------V-101013-----------------------------
  2388. INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
  2389.     AX = 1013h
  2390.     BL = subfunction
  2391.         00h select paging mode
  2392.         BH = 00h select 4 blocks of 64
  2393.         BH = 01h select 16 blocks of 16
  2394.         01h select page
  2395.         BH = page number (00h to 03h) or (00h to 0Fh)
  2396. Return: nothing
  2397. Note:    this function is not valid in mode 13h
  2398. SeeAlso: AX=101Ah
  2399. --------V-101015-----------------------------
  2400. INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
  2401.     AX = 1015h
  2402.     BL = palette register number
  2403. Return: DH = red value
  2404.     CH = green value
  2405.     CL = blue value
  2406.     AX destroyed by some BIOSes
  2407.           (e.g. Tseng ET4000 BIOS v8.00n always returns AX=00C9h)
  2408. SeeAlso: AX=1010h,AX=1017h
  2409. --------V-101017-----------------------------
  2410. INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
  2411.     AX = 1017h
  2412.     BX = starting palette register
  2413.     CX = number of palette registers to read
  2414.     ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
  2415. Return: buffer filled with CX red, green and blue triples
  2416. SeeAlso: AX=1012h,AX=1015h,INT 62/AX=00A4h
  2417. --------V-101018-----------------------------
  2418. INT 10 U - VIDEO - SET PEL MASK (VGA/MCGA)
  2419.     AX = 1018h
  2420.     BL = new PEL value
  2421. Return: nothing
  2422. SeeAlso: AX=1019h
  2423. --------V-101019-----------------------------
  2424. INT 10 U - VIDEO - READ PEL MASK (VGA/MCGA)
  2425.     AX = 1019h
  2426. Return: BL = value read
  2427. SeeAlso: AX=1018h
  2428. --------V-10101A-----------------------------
  2429. INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
  2430.     AX = 101Ah
  2431. Return: BL = paging mode
  2432.         00h four pages of 64
  2433.         01h sixteen pages of 16
  2434.     BH = current page
  2435. SeeAlso: AX=1013h
  2436. --------V-10101B-----------------------------
  2437. INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
  2438.     AX = 101Bh
  2439.     BX = starting palette register
  2440.     CX = number of registers to convert
  2441. Return: nothing
  2442. Desc:    convert the RGB values of one or more palette registers such that the
  2443.       resulting values are grays with the same intensities as the original
  2444.       colors
  2445. SeeAlso: AH=12h/BL=33h
  2446. --------V-1010E0-----------------------------
  2447. INT 10 - VIDEO - Diamond Speedstar 24 - SET 24-BIT GRAPHICS MODE
  2448.     AX = 10E0h
  2449.     BL = video mode (see also #0009 at AH=00h)
  2450.         2Eh = 640x480
  2451. Return: ???
  2452. SeeAlso: AH=00h,AX=10F0h
  2453. --------V-1010F0-----------------------------
  2454. INT 10 - VIDEO - Tseng ET-4000 BIOS - SET HiColor GRAPHICS MODE
  2455.     AX = 10F0h
  2456.     BL = video mode (see also #0009 at AH=00h)
  2457.         13h = 320x200x32K
  2458.         2Dh = 640x350x32K
  2459.         2Eh = 640x480x32K
  2460.         2Fh = 640x400x32K
  2461.         30h = 800x600x32K
  2462.         3Eh = 640x480x16M (Genoa 7900)
  2463.         FFh Tseng 24-bit color mode
  2464.         BH = mode
  2465.             2Dh = 640x480
  2466.             2Eh = 640x480x16M
  2467.             2Fh = 640x400
  2468.             30h = 800x600
  2469.             38h = 1024x768??? (Tseng ET4000/W32i)
  2470. Return: AL = 10h if supported
  2471.     AH = status
  2472.         00h if successful
  2473.         other on error
  2474. Desc:    switch the display into a graphics mode with 15 or more bits per pixel
  2475. Note:    the Tseng HiColor BIOS extensions are supported by:
  2476.       Diamond Computer Systems    SpeedStar HiColor VGA
  2477.       Everex Systems        HC VGA
  2478.       Focus Information Systems    2theMax 4000
  2479.       Cardinal Technologies        VGA732
  2480.       Orchid ProDesigner IIs    Genoa 7900
  2481. SeeAlso: AH=00h,AX=10E0h,AX=10F1h,AX=10F2h
  2482. Index:    video modes;Tseng Hi-Color
  2483. --------V-1010F1-----------------------------
  2484. INT 10 - VIDEO - Tseng ET-4000 BIOS - GET DAC TYPE
  2485.     AX = 10F1h
  2486. Return: AL = 10h if supported
  2487.     BL = type of digital/analog converter (see #0018)
  2488. Desc:    determine which type of digital-to-analog converter is installed on the
  2489.       display board
  2490. SeeAlso: AX=10F0h,AX=10F2h
  2491.  
  2492. (Table 0018)
  2493. Values for type of DAC:
  2494.  00h normal VGA DAC
  2495.  01h Sierra SC1148x HiColor DAC
  2496.  ---Diamond SpeedStar 24---
  2497.  02h new Sierra SS24 DAC (24-bit)
  2498.  ---generic Tseng BIOS v8+ ---
  2499.  02h Sierra Mark2 (15-bit) or Mark3 (15/16-bit) DAC
  2500.  03h ATT20c490/1/2 (15/16/24-bit)
  2501.  04h AcuMos ADAC1 (15/16/24-bit)
  2502.  05h unknown 15/16/24-bit DAC
  2503.  06h Cirrus Internal 15/16/24-bit (CL-GD54xx series adapters)
  2504.  07h Diamond SS2410 (15/24-bit)
  2505.  08h unknown 15/16/24-bit DAC
  2506.  09h unknown 15/16/24-bit DAC
  2507.  else other HiColor DAC
  2508. --------V-1010F2-----------------------------
  2509. INT 10 u - VIDEO - Tseng ET-4000 BIOS - CHECK IF HiColor MODE/SET HiColor MODE
  2510.     AX = 10F2h
  2511.     BL = function
  2512.         00h get current HiColor mode
  2513.         01h set 15-bit HiColor mode
  2514.         02h set 16-bit HiColor mode
  2515. Return: AX = 0010h if supported
  2516.         BL = video mode type
  2517.         00h not in HiColor mode
  2518.         01h 15-bit RGB mode
  2519.         02h 16-bit RGB mode
  2520.         03h 24-bit RGB mode
  2521. Desc:    determine whether the display is in a graphics mode with 15 or more
  2522.       bits per pixel color resolution
  2523. Note:    set (BL=01h/02h) only works if already in a HiColor mode
  2524. SeeAlso: AH=0Fh,AX=10F0h,AX=10F1h
  2525. --------V-1011-------------------------------
  2526. INT 10 - BIOS Window Extension v1.1 - GET WINDOW COORDINATES
  2527.     AH = 11h
  2528. Return: CH,CL = row,column of upper left corner
  2529.     DH,DL = row,column of lower right corner
  2530. Desc:    determine the portion of the display to which output is restricted
  2531. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  2532. SeeAlso: AH=10h"Window",AH=12h"Window"
  2533. --------V-1011-------------------------------
  2534. INT 10 - Tandy 2000 - VIDEO - WRITE ATTRIBUTE ONLY
  2535.     AH = 11h
  2536.     BL = new character attribute (text modes) or color (graphics)
  2537.     CX = number of times to write attribute
  2538. Return: nothing
  2539. Note:    this interrupt is identical to INT 52 on Tandy 2000
  2540. SeeAlso: AH=0Ah,AH=0Bh/BH=02h,AH=11h"Tandy 2000",AH=12h"Tandy 2000"
  2541. SeeAlso: INT 52"Tandy 2000"
  2542. --------V-101100-----------------------------
  2543. INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD USER-SPECIFIED PATTERNS (PS,EGA,VGA)
  2544.     AX = 1100h
  2545.     ES:BP -> user table
  2546.     CX = count of patterns to store
  2547.     DX = character offset into map 2 block
  2548.     BL = block to load in map 2
  2549.     BH = number of bytes per character pattern
  2550. Return: nothing
  2551. Notes:    This function will cause a mode set, completely resetting
  2552.       the video environment, but without clearing the video buffer
  2553.     the current block specifiers may be determined with INT 10/AH=1Bh,
  2554.       looking at offsets 2Bh and 2Ch of the returned data (VGA only)
  2555.       (see AH=1Bh,#0038)
  2556. SeeAlso: AX=1101h,AX=1102h,AX=1103h,AX=1104h,AX=1110h,AH=1Bh,AX=CD10h
  2557. --------V-101101-----------------------------
  2558. INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM MONOCHROME PATTERNS (PS,EGA,VGA)
  2559.     AX = 1101h
  2560.     BL = block to load
  2561. Return: nothing
  2562. Notes:    (see also AX=1100h)
  2563.     This function will cause a mode set, completely resetting
  2564.       the video environment, but without clearing the video buffer
  2565.     the "monochrome" patters are 8x14 pixels in size
  2566. SeeAlso: AX=1100h,AX=1102h,AX=1103h,AX=1104h,AX=1111h,AH=1Bh,AX=CD10h
  2567. --------V-101102-----------------------------
  2568. INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x8 DBL-DOT PATTERNS (PS,EGA,VGA)
  2569.     AX = 1102h
  2570.     BL = block to load
  2571. Return: nothing
  2572. Notes:    (see AX=1100h)
  2573. SeeAlso: AX=1100h,AX=1101h,AX=1103h,AX=1104h,AX=1112h,AH=1Bh,AX=CD10h
  2574. SeeAlso: MEM 0040h:0084h
  2575. --------V-101103-----------------------------
  2576. INT 10 - VIDEO - TEXT-MODE CHARGEN - SET BLOCK SPECIFIER (PS,EGA,VGA)
  2577.     AX = 1103h
  2578.     BL = block specifier (see #0019)
  2579. Return: nothing
  2580. Notes:    (see also AX=1110h)
  2581.     This function allows dual character sets to appear on screen
  2582.       simultaneously
  2583. SeeAlso: AX=1100h,AX=1101h,AX=1102h,AX=1104h,AH=1Bh,AX=CD10h
  2584.  
  2585. Bitfields for block specifier:
  2586. Bit(s)    Description    (Table 0019)
  2587. ---EGA/MCGA---
  2588.  0,1    block selected by characters with attribute bit 3 clear
  2589.  2,3    block selected by characters with attribute bit 3 set
  2590. ---VGA---
  2591.  0,1,4    block selected by characters with attribute bit 3 clear
  2592.  2,3,5    block selected by characters with attribute bit 3 set
  2593. --------V-101104-----------------------------
  2594. INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x16 CHARACTER SET (VGA)
  2595.     AX = 1104h
  2596.     BL = block to load
  2597. Return: nothing
  2598. Notes:    (see AX=1100h)
  2599. SeeAlso: AX=1100h,AX=1101h,AX=1102h,AX=1103h,AX=1114h,AH=1Bh,AX=CD10h
  2600. --------V-1011-------------------------------
  2601. INT 10 - VIDEO - Realtek RTVGA - TEXT-MODE CHARACTER GENERATOR FUNCTIONS
  2602.     AH = 11h
  2603.     AL = 07h load user-specified paterns and recalculate mode parms
  2604.          parameters are the same as for AX=1110h
  2605.     AL = 08h load monochrome patterns (8x14) and recalculate mode parms
  2606.          parameters are the same as for AX=1111h
  2607.     AL = 09h load ROM 8 by 8 double-dot patterns and recalculate mode parms
  2608.          parameters are the same as for AX=1112h
  2609.     AL = 0Bh load ROM 8x16 character set (VGA) and recalculate mode parms
  2610.          parameters are the same as for AX=1114h
  2611. Note:    these functions should only be called under the same conditions as
  2612.       AL=1xh (see AX=1110h"EGA")
  2613. SeeAlso: AX=1100h,AX=1110h"CHARGEN",AX=1110h"Realtek"
  2614. --------V-10110F-----------------------------
  2615. INT 10 - VIDEO - Realtek RTVGA - SET USER 8x8 GRAPHICS CHARACTERS
  2616.     AX = 110Fh
  2617.     ES:BP -> user table for INT 1F
  2618. Return: nothing
  2619. Note:    this function is meant to be called immediately after a mode set;
  2620.       results are unpredictable at other times
  2621. SeeAlso: AX=1110h"Realtek",AX=1111h"Realtek",AX=1112h"Realtek",AX=1120h
  2622. --------V-101110-----------------------------
  2623. INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD USER-SPECIFIED PATTERNS (PS,EGA,VGA)
  2624.     AX = 1110h
  2625.     ES:BP -> user table
  2626.     CX = count of patterns to store
  2627.     DX = character offset into map 2 block
  2628.     BL = block to load in map 2
  2629.     BH = number of bytes per character pattern
  2630. Return: nothing
  2631. Notes:    This function will cause a mode set, completely resetting
  2632.       the video environment, but without clearing the video buffer
  2633.     This function is designed to be called immediately after a mode set,
  2634.       it is equivalent to AX=110xh except that:
  2635.           Page 0 must be active.
  2636.           Bytes/character is recalculated.
  2637.           Max character rows is recalculated.
  2638.           CRT buffer length is recalculated.
  2639.           CRTC registers are reprogrammed as follows:
  2640.              R09 = bytes/char-1 ; max scan line (mode 7 only)
  2641.              R0A = bytes/char-2 ; cursor start
  2642.              R0B = 0        ; cursor end
  2643.              R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
  2644.              R14 = bytes/char    ; underline loc
  2645.                (*** BUG: should be 1 less ***)
  2646.     the current block specifiers may be determined with INT 10/AH=1Bh,
  2647.       looking at offsets 2Bh and 2Ch of the returned data (VGA only)
  2648.       (see AH=1Bh,#0038)
  2649. SeeAlso: AX=1100h,AX=1111h,AX=1112h,AX=1114h,AH=1Bh,AX=CD10h,MEM 0040h:0084h
  2650. --------V-101110-----------------------------
  2651. INT 10 - VIDEO - Realtek RTVGA - SET USER GRAPHICS CHARACTERS
  2652.     AX = 1110h
  2653.     ES:BP -> user table
  2654.     CX = bytes per character
  2655.     BL = row specifier
  2656.         00h user set
  2657.         DL = number of rows
  2658.         01h 14 rows
  2659.         02h 25 rows
  2660.         03h 43 rows
  2661. Return: nothing
  2662. Note:    this function is meant to be called immediately after a mode set;
  2663.       results are unpredictable at other times
  2664. SeeAlso: AX=110Fh"Realtek",AX=1112h"Realtek",AX=1121h
  2665. --------V-101111-----------------------------
  2666. INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM MONOCHROME PATTERNS (PS,EGA,VGA)
  2667.     AX = 1111h
  2668.     BL = block to load
  2669. Return: nothing
  2670. Notes:    (see AX=1110h)
  2671.     the "monochrome" patters are 8x14 pixels in size
  2672. SeeAlso: AX=1101h,AX=1110h,AX=1112h,AX=1114h,AH=1Bh,AX=CD10h
  2673. --------V-101111-----------------------------
  2674. INT 10 - VIDEO - Realtek RTVGA - SET ROM 8x14 GRAPHICS CHARACTERS
  2675.     AX = 1111h
  2676.     BL = row specifier (see AX=1121h)
  2677. Return: nothing
  2678. Note:    this function is meant to be called immediately after a mode set;
  2679.       results are unpredictable at other times
  2680. SeeAlso: AX=110Fh"Realtek",AX=1110h"Realtek",AX=1122h
  2681. --------V-101112-----------------------------
  2682. INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x8 DBL-DOT PATTERNS (PS,EGA,VGA)
  2683.     AX = 1112h
  2684.     BL = block to load
  2685. Return: nothing
  2686. Notes:    (see AX=1110h)
  2687. SeeAlso: AX=1103h,AX=1110h,AX=1111h,AX=1114h,AH=1Bh,AX=CD10h
  2688. --------V-101112-----------------------------
  2689. INT 10 - VIDEO - Realtek RTVGA - SET ROM 8x8 DOUBLE-DOT CHARACTERS
  2690.     AX = 1112h
  2691.     BL = row specifier (see AX=1121h)
  2692. Return: nothing
  2693. Note:    this function is meant to be called immediately after a mode set;
  2694.       results are unpredictable at other times
  2695. SeeAlso: AX=110Fh"Realtek",AX=1110h"Realtek",AX=1111h"Realtek",AX=1123h
  2696. --------V-101114-----------------------------
  2697. INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x16 CHARACTER SET (VGA)
  2698.     AX = 1114h
  2699.     BL = block to load
  2700. Return: nothing
  2701. Notes:    (see AX=1110h)
  2702. SeeAlso: AX=1104h,AX=1110h,AX=1111h,AX=1112h,AH=1Bh,AX=CD10h
  2703. --------V-101118-----------------------------
  2704. INT 10 - IBM SurePath BIOS - Officially "Private" Function
  2705.     AX = 1118h
  2706. --------V-101120-----------------------------
  2707. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER 8x8 GRAPHICS CHARS (PS,EGA,VGA)
  2708.     AX = 1120h
  2709.     ES:BP -> user table for INT 1F
  2710. Return: nothing
  2711. Note:    this function is meant to be called immediately after a mode set;
  2712.       results are unpredictable at other times
  2713. SeeAlso: AX=1121h,AX=1122h,AX=1123h,AX=1124h,AX=1129h,INT 1F"SYSTEM DATA"
  2714. SeeAlso: INT 43"VIDEO DATA"
  2715. --------V-101121-----------------------------
  2716. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER GRAPHICS CHARACTERS (PS,EGA,VGA)
  2717.     AX = 1121h
  2718.     ES:BP -> user table
  2719.     CX = bytes per character
  2720.     BL = row specifier
  2721.         00h user set
  2722.         DL = number of rows
  2723.         01h 14 rows
  2724.         02h 25 rows
  2725.         03h 43 rows
  2726. Return: AL = new number of rows (Diamond Stealth64 Video)
  2727. Note:    this function is meant to be called immediately after a mode set;
  2728.       results are unpredictable at other times
  2729. SeeAlso: AX=1120h,AX=1122h,AX=1123h,AX=1124h,AX=1129h"Compaq"
  2730. SeeAlso: AX=1129h"Diamond",INT 1F"SYSTEM DATA",INT 43"VIDEO DATA"
  2731. --------V-101122-----------------------------
  2732. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x14 GRAPHICS CHARS (PS,EGA,VGA)
  2733.     AX = 1122h
  2734.     BL = row specifier (see AX=1121h)
  2735. Return: nothing
  2736. Notes:    this function is meant to be called immediately after a mode set;
  2737.       results are unpredictable at other times
  2738.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2739. SeeAlso: AX=1111h,AX=1120h,AX=1121h,AX=1123h,AX=1124h,AX=1129h
  2740. SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA"
  2741. --------V-101123-----------------------------
  2742. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x8 DOUBLE-DOT CHARS (PS,EGA,VGA)
  2743.     AX = 1123h
  2744.     BL = row specifier (see AX=1121h)
  2745. Return: nothing
  2746. Notes:    this function is meant to be called immediately after a mode set;
  2747.       results are unpredictable at other times
  2748.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2749. SeeAlso: AX=1112h,AX=1120h,AX=1121h,AX=1122h,AX=1124h,AX=1129h
  2750. SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA"
  2751. --------V-101124-----------------------------
  2752. INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPHICS CHARS (VGA,MCGA)
  2753.     AX = 1124h
  2754.     BL = row specifier (see AX=1121h)
  2755. Return: nothing
  2756. Notes:    this function is meant to be called immediately after a mode set;
  2757.       results are unpredictable at other times
  2758.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2759. SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1129h
  2760. SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA"
  2761. --------V-101129-----------------------------
  2762. INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPH CHARS (Compaq Systempro)
  2763.     AX = 1129h
  2764.     BL = row specifier (see AX=1121h)
  2765. Return: nothing
  2766. Notes:    this function is meant to be called immediately after a mode set;
  2767.       results are unpredictable at other times
  2768.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2769. SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1124h,INT 1F"SYSTEM DATA"
  2770. SeeAlso: INT 43"VIDEO DATA"
  2771. --------V-101129-----------------------------
  2772. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER GRAPHICS CHARACTERS (Diamond)
  2773.     AX = 1129h
  2774.     DI:BP -> user table
  2775.     CX = bytes per character
  2776.     BL = row specifier
  2777.         00h user set
  2778.         DL = number of rows
  2779.         01h 14 rows
  2780.         02h 25 rows
  2781.         03h 43 rows
  2782. Return: AL = new number of rows
  2783. Notes:    this function is meant to be called immediately after a mode set;
  2784.       results are unpredictable at other times
  2785.     supported by Diamond Stealth64 Video
  2786. SeeAlso: AX=1120h,AX=1122h,AX=1123h,AX=1124h,INT 1F"SYSTEM",INT 43"VIDEO"
  2787. --------V-101130-----------------------------
  2788. INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
  2789.     AX = 1130h
  2790.     BH = pointer specifier
  2791.         00h INT 1Fh pointer
  2792.         01h INT 43h pointer
  2793.         02h ROM 8x14 character font pointer
  2794.         03h ROM 8x8 double dot font pointer
  2795.         04h ROM 8x8 double dot font (high 128 characters)
  2796.         05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
  2797.         06h ROM 8x16 font (MCGA, VGA)
  2798.         07h ROM alternate 9x16 font (VGA only) (see #0020)
  2799.         11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA)
  2800.         12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA)
  2801. Return: ES:BP = specified pointer
  2802.     CX    = bytes/character of on-screen font (not the requested font!)
  2803.     DL    = highest character row on screen
  2804. Note:    for UltraVision v2+, the 9xN alternate fonts follow the corresponding
  2805.       8xN font at ES:BP+256N
  2806. BUG:    the IBM EGA and some other EGA cards return in DL the number of rows on
  2807.       screen rather than the highest row number (which is one less).
  2808. SeeAlso: AX=1100h,AX=1103h,AX=1120h,INT 1F"SYSTEM DATA",INT 43"VIDEO DATA"
  2809.  
  2810. Format of alternate font table [array]:
  2811. Offset    Size    Description    (Table 0020)
  2812.  00h    BYTE    character to be replaced (00h = end of table)
  2813.  01h  N BYTEs    graphics data for character, one byte per scan line
  2814. --------V-101130BX4D4F-----------------------
  2815. INT 10 - M10_SCR.COM v3.5+ - INSTALLATION CHECK
  2816.     AX = 1130h
  2817.     BX = 4D4Fh
  2818. Return: CX = 4F4Dh if installed
  2819.         ES:BP -> M10_SCR INT 10 handler
  2820. Program: M10_SCR is a shareware extended text mode and font driver by
  2821.       I.V. Morozov
  2822. SeeAlso: INT 16/AX=4D4Fh
  2823. --------V-1012-------------------------------
  2824. INT 10 - BIOS Window Extension v1.1 - GET BLANKING ATTRIBUTE
  2825.     AH = 12h
  2826. Return: BH = attribute to use on blanked lines when scrolling
  2827. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  2828. SeeAlso: AH=11h"Window",AH=12h"Window"
  2829. --------V-1012-------------------------------
  2830. INT 10 - Tandy 2000 - VIDEO - SCROLL WINDOW
  2831.     AH = 12h
  2832.     AL = number of rows or columns to scroll
  2833.     BH = buffer flag
  2834.         00h data in user buffer
  2835.         ES:SI -> buffer containing character/attribute pairs
  2836.         01h no buffer, fill emptied rows/columns with blanks
  2837.     BL = direction in which to scroll
  2838.         00h up
  2839.         01h down
  2840.         02h left
  2841.         03h right
  2842.     CH,CL = row,column of upper left corner of scroll area
  2843.     DH,DL = row,column of lower right corner
  2844. Return: nothing
  2845. Notes:    this interrupt is identical to INT 52 on Tandy 2000
  2846.     the user buffer, if supplied, must be organized by row; regardless of
  2847.       the scroll direction, all character/attribute pairs for the first
  2848.       row are first, then the pairs for the second row, etc.
  2849. SeeAlso: AH=00h,AH=0Bh/BH=02h,AH=11h"Tandy 2000",AH=12h"Tandy 2000"
  2850. SeeAlso: INT 52"Tandy"
  2851. --------V-1012--BL10-------------------------
  2852. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO
  2853.     AH = 12h
  2854.     BL = 10h
  2855. Return: BH = video state
  2856.         00h color mode in effect (I/O port 3Dxh)
  2857.         01h mono mode in effect (I/O port 3Bxh)
  2858.     BL = installed memory (00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K)
  2859.     CH = feature connector bits (see #0021)
  2860.     CL = switch settings (see #0022,#0023)
  2861.     AH destroyed (at least by Tseng ET4000 BIOS v8.00n)
  2862. Note:    one possible check for the presence of an EGA or later display card
  2863.       is to call this function with BH=FFh; if not present, BH will be
  2864.       unchanged on return
  2865.     another installation check is used by Athena Digital's HGCIBM, which
  2866.       sets CX to FFFFh on calling and checks whether it has been changed
  2867.       on return
  2868. Index:    installation check;EGA
  2869.  
  2870. Bitfields for feature connector bits:
  2871. Bit(s)    Description    (Table 0021)
  2872.  0    FEAT 1 line, state 2
  2873.  1    FEAT 0 line, state 2
  2874.  2    FEAT 1 line, state 1
  2875.  3    FEAT 0 line, state 1
  2876.  4-7    unused (0)
  2877.  
  2878. Bitfields for switch settings:
  2879. Bit(s)    Description    (Table 0022)
  2880.  0    switch 1 OFF
  2881.  1    switch 2 OFF
  2882.  2    switch 3 OFF
  2883.  3    switch 4 OFF
  2884.  4-7    unused
  2885.  
  2886. (Table 0023)
  2887. Values for switch settings on original EGA/VGA:
  2888.  00h        primary MDA/HGC,    secondary EGA+ 40x25
  2889.  01h-03h    primary MDA/HGC,    secondary EGA+ 80x25
  2890.  04h        primary CGA 40x25,    secondary EGA+ 80x25 mono
  2891.  05h        primary CGA 80x25,    secondary EGA+ 80x25 mono
  2892.  06h        primary EGA+ 40x25,    secondary MDA/HGC (optional)
  2893.  07h-09h    primary EGA+ 80x25,    secondary MDA/HGC (optional)
  2894.  0Ah        primary EGA+ 80x25 mono,secondary CGA 40x25 (optional)
  2895.  0Bh        primary EGA+ 80x25 mono,secondary CGA 80x25 (optional)
  2896. --------V-1012--BL11-------------------------
  2897. INT 10 - VIDEO - Trident TVGA 8800/8900/9000 BIOS - GET BIOS INFO
  2898.     AH = 12h
  2899.     BL = 11h
  2900. Return: AL = 12h if function supported
  2901.         BL = ??? (10h)
  2902.         ES:BP -> BIOS info structure (see #0024)
  2903. SeeAlso: AH=12h/BL=12h"TRIDENT"
  2904.  
  2905. Format of Trident BIOS Info structure:
  2906. Offset    Size     Description    (Table 0024)
  2907.  00h    BYTE     ??? (0000h)
  2908.  01h    BYTE     OEM Code (00h for original Trident)
  2909.  02h    WORD     ID??? (1073h for 8800BR, 1074 for 8800CS)
  2910.  04h  8 BYTEs     BIOS date ('mm/dd/yy')
  2911.  0Ch    WORD     ???
  2912.  0Eh  8 BYTEs     BIOS Version (' C3-128 ', ' C3-129 ')
  2913. --------V-1012--BL12-------------------------
  2914. INT 10 - VIDEO - Trident TVGA 8800/8900/9000 BIOS - GET VIDEO RAM SIZE
  2915.     AH = 12h
  2916.     BL = 12h
  2917. Return: AL = 12h if function supported
  2918.         AH = number of 256K banks of RAM installed
  2919.           (read from CRTC register 1Fh)
  2920. SeeAlso: AH=12h/BL=11h"TRIDENT"
  2921. --------V-1012--BL20-------------------------
  2922. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
  2923.     AH = 12h
  2924.     BL = 20h  select alternate print screen routine
  2925. Return: nothing
  2926. Desc:    installs a PrtSc routine from the video card's BIOS to replace the
  2927.       default PrtSc handler from the ROM BIOS, which usually does not
  2928.       understand screen heights other than 25 lines
  2929. Note:    some adapters disable print-screen instead of enhancing it
  2930. SeeAlso: INT 05"PRINT SCREEN"
  2931. --------V-1012--BL2E-------------------------
  2932. INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
  2933.     AH = 12h
  2934.     BL = 2Eh
  2935. Return: nothing
  2936. Note:    due to an omitted end-of-list marker, these versions of the BIOS will
  2937.       crash the system on this function
  2938. --------V-1012--BL30-------------------------
  2939. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
  2940.     AH = 12h
  2941.     BL = 30h
  2942.     AL = vertical resolution
  2943.          00h 200 scan lines
  2944.          01h 350 scan lines
  2945.          02h 400 scan lines
  2946. Return: AL = 12h if function supported
  2947. Desc:    specify the number of scan lines used to display text modes
  2948. Note:    the specified resolution will take effect on the next mode set
  2949. SeeAlso: AH=00h
  2950. --------V-1012--BL31-------------------------
  2951. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
  2952.     AH = 12h
  2953.     BL = 31h
  2954.     AL = new state
  2955.         00h enable default palette loading
  2956.         01h disable default palette loading
  2957. Return: AL = 12h if function supported
  2958. Desc:    specify whether a default palette should be loaded when the display
  2959.       mode is set
  2960. SeeAlso: AH=00h
  2961. --------V-1012--BL32-------------------------
  2962. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
  2963.     AH = 12h
  2964.     BL = 32h
  2965.     AL = new state
  2966.         00h enable video addressing
  2967.         01h disable video addressing
  2968. Return: AL = 12h if function supported
  2969. Desc:    specify whether the CPU should have access to video memory and the
  2970.       display adapters I/O registers
  2971. --------V-1012--BL33-------------------------
  2972. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING
  2973.     AH = 12h
  2974.     BL = 33h
  2975.     AL = new state
  2976.         00h enable gray scale summing
  2977.         01h disable gray scale summing
  2978. Return: AL = 12h if function supported
  2979. Desc:    specify whether or not colors should be converted to gray scale when
  2980.       palette or color registers are loaded
  2981. SeeAlso: AX=101Bh,AX=BF06h,AX=BF08h
  2982. --------V-1012--BL34-------------------------
  2983. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
  2984.     AH = 12h
  2985.     BL = 34h
  2986.     AL = new state
  2987.         00h enable alphanumeric cursor emulation
  2988.         01h disable alphanumeric cursor emulation
  2989. Return: AL = 12h if function supported
  2990. Desc:    specify whether the BIOS should automatically remap cursor start/end
  2991.       according to the current character height in text modes
  2992. SeeAlso: AH=01h,AH=03h
  2993. --------V-1012--BL35-------------------------
  2994. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
  2995.     AH = 12h
  2996.     BL = 35h
  2997.     AL = subfunction
  2998.         00h initial adapter video off
  2999.         01h initial planar video on
  3000.         02h switch active video off
  3001.         03h switch inactive video on
  3002.         80h *UNDOCUMENTED* set system board video active flag
  3003.     ES:DX -> buffer for 128 byte save area (if AL = 00h-03h)
  3004. Return: AL = 12h if function supported
  3005. Desc:    switch between two video adapters which may otherwise have address
  3006.       conflicts
  3007. SeeAlso: AX=BF00h,AX=BF01h,INT 6D"VGA"
  3008. --------V-1012--BL36-------------------------
  3009. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL
  3010.     AH = 12h
  3011.     BL = 36h
  3012.     AL = new state
  3013.         00h enable refresh
  3014.         01h disable refresh
  3015. Return: AL = 12h if function supported
  3016. Desc:    specify whether the contents of video memory should be displayed on
  3017.       the screen; disabling refresh effectively blanks the screen
  3018. Note:    when display refresh is disabled, the entire screen displays the color
  3019.       specified by the DAC color register 00h; thus to actually blank the
  3020.       screen, the application must first ensure that that register has been
  3021.       set to black
  3022. BUG:    GEM/VIEWMAX ET3000 and ET4000 drivers dated 6/23/88 do not correctly
  3023.       reenable refresh after the screen has been blanked due to inactivity,
  3024.       resulting in a total loss of video synchronization
  3025. SeeAlso: AX=BF05h
  3026. --------V-1012--BL37-------------------------
  3027. INT 10 - VIDEO - XGA - MAINFRAME INTERACTIVE SUPPORT
  3028.     AH = 12h
  3029.     BL = 37h
  3030.     AL = text attribute type (00h normal VGA, 01h mainframe type)
  3031. Return: AL = 12h if supported
  3032. SeeAlso: #0025,AH=08h,#0040
  3033.  
  3034. Bitfields for XGA mainframe type character attributes:
  3035. Bit(s)    Description    (Table 0025)
  3036.  7    blink double rate (75% ON time) or use color 8 as background
  3037.     (see AX=1003h)
  3038.  6    reverse video
  3039.  5    underlined
  3040.  4    left-most and right-most dots of underline area inverted
  3041.  3    foreground intensity/character font select
  3042.  2-0    foreground color
  3043. SeeAlso: #0013,#0034
  3044. --------V-1012--BL38-------------------------
  3045. INT 10 - IBM SurePath BIOS - Officially "Private" Function
  3046.     AH = 12h
  3047.     BL = 38h
  3048. SeeAlso: AX=1118h,AH=12h/BL=39h
  3049. --------V-1012--BL39-------------------------
  3050. INT 10 - IBM SurePath BIOS - Officially "Private" Function
  3051.     AH = 12h
  3052.     BL = 39h
  3053. SeeAlso: AX=1118h,AH=12h/BL=38h,AH=12h/BL=3Ah
  3054. --------V-1012--BL3A-------------------------
  3055. INT 10 - IBM SurePath BIOS - Officially "Private" Function
  3056.     AH = 12h
  3057.     BL = 3Ah
  3058. SeeAlso: AX=1118h,AH=12h/BL=39h
  3059. --------V-1012--BL53-------------------------
  3060. INT 10 - Tseng ET-4000 BIOS v8.00 (06/07/91) - BUG
  3061.     AH = 12h
  3062.     BL = 53h
  3063. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  3064.       crash the system on this function
  3065. --------V-1012--BL57-------------------------
  3066. INT 10 - Tseng ET-4000 BIOS v8.00 (06/07/91) - BUG
  3067.     AH = 12h
  3068.     BL = 57h
  3069. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  3070.       crash the system on this function
  3071. --------V-1012--BH55-------------------------
  3072. INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES
  3073.     AH = 12h
  3074.     BH = 55h
  3075.     BL = subfunction
  3076.         00h disable enhanced features
  3077.         01h enable enhanced features
  3078.         02h get status
  3079.         Return: AL = status flags (see #0026)
  3080.         03h disable register trapping (CGA emulation)
  3081.         04h enable register trapping
  3082.         05h program video mode
  3083.         ES:BP -> video mode table (see #0027)
  3084.         06h get mode table
  3085.         AL = video mode
  3086.         Return: ES:BP -> table suitable for mode AL
  3087.                   (and subfunc BL=05h) (see #0027)
  3088.             BP = FFFFh on error
  3089.             SI = 0000h (ATI Mach32)
  3090. Note:    the ATI Mouse driver (MOUSE.COM/MOUSE.SYS) uses subfunction 06h to get
  3091.       the mode table for mode 03h, and then looks for a signature string
  3092.       beginning within 32 bytes of the offset specified by the word at
  3093.       ES:000Ch
  3094. SeeAlso: AH=FFh"Oak"
  3095. Index:    installation check;ATI video adapters
  3096.  
  3097. Bitfields for status flags:
  3098. Bit(s)    Description    (Table 0026)
  3099.  3    set if enhanced features enabled
  3100.  7-5    monitor type
  3101.     000 PS/2 mono
  3102.     001 PS/2 color
  3103.     010 multi-sync
  3104.     011 Taxan 650 25kHz
  3105.     100 RGB
  3106.     101 mono
  3107.     110 EGA
  3108.     111 Compaq internal
  3109.  
  3110. Format of ATI VGA Wonder video mode table:
  3111. Offset    Size    Description    (Table 0027)
  3112.  00h    BYTE    number of columns
  3113.  01h    BYTE    maximum row (number of rows - 1)
  3114.  02h    BYTE    scan lines per row
  3115.  03h    WORD    video buffer size in bytes
  3116.  05h  4 BYTEs    values for Sequencer registers 1-4
  3117.  09h    BYTE    value for Miscellaneous Output register
  3118.  0Ah 25 BYTEs    values for CRTC registers 00h-18h
  3119.         00h horizontal total size (chars)
  3120.         01h horizontal displayed (chars)
  3121.         02h horizontal sync position (chars)
  3122.         03h horizontal sync width (chars)
  3123.         04h vertical total size (char rows)
  3124.         05h vertical total adjust (scan lines)
  3125.         06h vertical displayed (char rows)
  3126.         07h vertical sync position (char rows)
  3127.         08h interlace mode
  3128.         09h max scan line in row
  3129.         0Ah cursor start scan line
  3130.         0Bh cursor end scan line
  3131.         0Ch screen memory start (high)
  3132.         0Dh screen memory start (low)
  3133.         0Eh cursor address (high)
  3134.         0Fh cursor address (low)
  3135.         10h light pen (high)
  3136.         11h light pen (low)
  3137.  23h 20 BYTEs    default palette (values for Attribute Controller regs 00h-13h)
  3138.  37h  9 BYTEs    values for Graphics Controller registers 00h-08h
  3139. --------V-1012--BL74-------------------------
  3140. INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
  3141.     AH = 12h
  3142.     BL = 74h
  3143. Note:    due to an omitted end-of-list marker, these versions of the BIOS will
  3144.       crash the system on this function
  3145. --------V-1012--BL80-------------------------
  3146. INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
  3147.     AH = 12h
  3148.     BL = 80h
  3149. Note:    due to an omitted end-of-list marker, these versions of the BIOS will
  3150.       crash the system on this function
  3151. --------V-1012--BL80-------------------------
  3152. INT 10 - Cirrus Logic BIOS - INQUIRE VGA TYPE
  3153.     AH = 12h
  3154.     BL = 80h
  3155. Return: AX = controller type in bits 13-0 (see #0028)
  3156.         bit 14: ???
  3157.         bit 15: ???
  3158.     BL = silicon revision number (bit 7 set if not available)
  3159. SeeAlso: AH=12h/BL=81h,AH=12h/BL=82h,AH=12h/BL=85h,AH=12h/BL=9Ah,AH=12h/BL=A1h
  3160.  
  3161. (Table 0028)
  3162. Values for Cirrus Logic video controller type:
  3163.  0000h    no extended alternate select support
  3164.  0002h    510/520
  3165.  0003h    610/620
  3166.  0004h    5320
  3167.  0005h    6410
  3168.  0006h    5410
  3169.  0007h    6420
  3170.  0008h    6412
  3171.  0010h    5401
  3172.  0011h    5402
  3173.  0012h    5420
  3174.  0013h    5422
  3175.  0014h    5424
  3176.  0015h    5426
  3177.  0016h    5420r1
  3178.  0017h    5402r1
  3179.  0018h    5428
  3180.  0020h    6205/15/25
  3181.  0030h    5432
  3182.  0031h    5434
  3183. SeeAlso: #0656,#0666
  3184. --------V-1012--BL81-------------------------
  3185. INT 10 - Cirrus Logic BIOS - GET BIOS VERSION NUMBER
  3186.     AH = 12h
  3187.     BL = 81h
  3188. Return: AH = BIOS major version
  3189.     AL = BIOS minor version
  3190. SeeAlso: AH=12h/BL=80h,AH=12h/BL=82h
  3191. --------V-1012--BL82-------------------------
  3192. INT 10 - Cirrus Logic BIOS - GET DESIGN REVISION CODE
  3193.     AH = 12h
  3194.     BL = 82h
  3195. Return: AL = chip revision
  3196.     AH = ??? (AFh for v1.01)
  3197. SeeAlso: AH=12h/BL=80h,AH=12h/BL=81h,#0656 at INT 1A/AX=B102h
  3198. --------V-1012--BL84-------------------------
  3199. INT 10 - Cirrus Logic BIOS v3.02 - INQUIRE OPTIONS
  3200.     AH = 12h
  3201.     BL = 84h
  3202. Return: AX = user options word (see #0029)
  3203. SeeAlso: AH=12h/BL=89h,AH=12h/BL=8Ah,AH=12h/BL=8Bh,AH=12h/BL=8Ch,AH=12h/BL=8Fh
  3204. SeeAlso: AH=12h/BL=90h,AH=12h/BL=9Ah
  3205.  
  3206. Bitfields for Cirrus Logic user options word:
  3207. Bit(s)    Description    (Table 0029)
  3208.  1,0    centering
  3209.     00 vertical centered, 01 from bottom, 10 from top, 11 reserved
  3210.  3,2    720-dot fix-up options
  3211.     00 OR every 8th and 9th pixel
  3212.     01 display MGA mode from left
  3213.     10 display MGA mode from right
  3214.     11 skip every 9th pixel
  3215.  4    ???
  3216.  7-5    video mode (001 CGA, 010 MGA, 011 EGA, 100 VGA)
  3217.  8    external monitor enabled instead of LCD panel
  3218.  9    vertical expand mode enabled
  3219.  10    8-bit mode instead of 16-bit mode
  3220.  11    normal video rather than reverse video (for LCD)
  3221.  12    attribute automap rather than attribute emulation
  3222.  13    bold mode disabled (default)
  3223.  14    fast bandwidth
  3224.  15    ???
  3225. --------V-1012--BL85-------------------------
  3226. INT 10 - Cirrus Logic BIOS - GET INSTALLED MEMORY
  3227.     AH = 12h
  3228.     BL = 85h
  3229. Return: AL = number of 64K banks of video memory
  3230. SeeAlso: AH=12h/BL=80h,AH=12h/BL=93h
  3231. --------V-1012--BL89-------------------------
  3232. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - EN/DISABLE REVERSE VIDEO MODE
  3233.     AH = 12h
  3234.     BL = 89h
  3235.     AL = new state (00h enabled, 01h disabled)
  3236. Return: nothing
  3237. SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Ah,AH=12h/BL=8Bh
  3238. --------V-1012--BL8A-------------------------
  3239. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET FRAME COLOR
  3240.     AH = 12h
  3241.     BL = 8Ah
  3242.     AL = new gray-scale color (00h = black to 0Fh = white)
  3243. Return: nothing
  3244. SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=8Fh
  3245. --------V-1012--BL8B-------------------------
  3246. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - ENABLE/DISABLE BOLD MODE
  3247.     AH = 12h
  3248.     BL = 8Bh
  3249.     AL = new state (00h enabled, 01h disabled)
  3250. Return: nothing
  3251. SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=8Ch,AH=12h/BL=8Fh
  3252. --------V-1012--BL8C-------------------------
  3253. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET AUTOMAP/EMULATE ATTRIBUTES
  3254.     AH = 12h
  3255.     BL = 8Ch
  3256.     AL = new state
  3257.         00h enable automap
  3258.         01h disable automap and emulate attributes
  3259. Return: nothing
  3260. SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Bh
  3261. --------V-1012--BL8F-------------------------
  3262. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - ENABLE/DISABLE EXPAND MODE
  3263.     AH = 12h
  3264.     BL = 8Fh
  3265.     AL = new state (00h enabled, 01h disabled)
  3266. Return: nothing
  3267. Note:    when expand mode is enabled, the vertical dimension is enlarged to
  3268.       full screen
  3269. SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=8Bh,AH=12h/BL=90h
  3270. --------V-1012--BL90-------------------------
  3271. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET CENTERING MODE
  3272.     AH = 12h
  3273.     BL = 90h
  3274.     AL = new position
  3275.         00h centered
  3276.         01h from top
  3277.         02h from bottom
  3278.         03h from top
  3279. Return: nothing
  3280. SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Fh
  3281. --------V-1012--BL91-------------------------
  3282. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET 720-DOT FIXUP MODE
  3283.     AH = 12h
  3284.     BL = 91h
  3285.     AL = new mode
  3286.         00h display MGA mode from left of screen (default)
  3287.         01h display MGA from right
  3288.         02h skip every ninth pixel
  3289.         03h OR every 8th and 9th pixel
  3290. Return: nothing
  3291. SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Ah,AH=12h/BL=90h
  3292. --------V-1012--BL92-------------------------
  3293. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SWITCH DISPLAY
  3294.     AH = 12h
  3295.     BL = 92h
  3296.     AL = new display (00h LCD, 01h external monitor)
  3297. Return: nothing
  3298. Note:    the deselected display is disabled
  3299. SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=90h,AH=12h/BL=94h
  3300. --------V-1012--BL93-------------------------
  3301. INT 10 - Cirrus Logic BIOS - FORCE 8-BIT OR 16-BIT OPERATION
  3302.     AH = 12h
  3303.     BL = 93h
  3304.     AL = new I/O width (00h = 16 bits, 01h = 8 bits)
  3305. Return: nothing
  3306. SeeAlso: AH=12h/BL=9Ah
  3307. --------V-1012--BL94-------------------------
  3308. INT 10 - Cirrus Logic BIOS v3.02 - POWER CONSERVATION
  3309.     AH = 12h
  3310.     BL = 94h
  3311.     AL = new state (00h wake up monitor, 01h shut down display)
  3312. Return: nothing
  3313. Note:    AL=01h is reported not to work properly on the LCD panel
  3314. SeeAlso: AH=12h/BL=84h,AH=12h/BL=92h
  3315. --------V-1012--BL9A-------------------------
  3316. INT 10 - Cirrus Logic BIOS - GET USER OPTIONS
  3317.     AH = 12h
  3318.     BL = 9Ah
  3319. Return: AX = options word 1 (see #0030)
  3320.     CX = options word 2 (see #0031)
  3321. SeeAlso: AH=12h/BL=80h,AH=12h/BL=84h,AH=12h/BL=93h,AH=12h/BL=A0h
  3322. SeeAlso: AH=12h/BL=A3h,AH=12h/BL=A4h,#0656 at INT 1A/AX=B102h
  3323.  
  3324. Bitfields for Cirrus Logic options word 1:
  3325. Bit(s)    Description    (Table 0030)
  3326.  0,1    reserved
  3327.  2-4    monitor type
  3328.  5-6    maximum vertical resolution
  3329.  7-9    reserved
  3330.  10    force 8-bit operation
  3331.  11-13    reserved
  3332.  14    vertical refresh frequency at 640x480
  3333.  15    reserved
  3334.  
  3335. Bitfields for Cirrus Logic options word 2:
  3336. Bit(s)    Description    (Table 0031)
  3337.  0-3    reserved
  3338.  4-5    vertical refresh frequency at 1280x1024
  3339.  6-10    reserved
  3340.  11-12    vertical refresh frequency at 800x600
  3341.  13-15    vertical refresh frequency at 1024x768
  3342. --------V-1012--BLA0-------------------------
  3343. INT 10 - Cirrus Logic BIOS - GET VIDEO MODE AVAILABILITY
  3344.     AH = 12h
  3345.     BL = A0h
  3346.     AL = video mode number (00h-7Fh)
  3347. Return: AH bit 0: video mode supported
  3348.     BX = offset of BIOS subroutine to fixup standard video parameters
  3349.         (call subroutine with DS:SI and ES:DI as returned by this call)
  3350.     DS:SI -> standard video parameters or FFFFh:FFFFh
  3351.     ES:DI -> supplemental video parameters or FFFFh:FFFFh
  3352. SeeAlso: AH=00h,AH=12h/BL=9Ah,AH=12h/BL=A1h
  3353. --------V-1012--BLA1-------------------------
  3354. INT 10 - Cirrus Logic BIOS - READ MONITOR TYPE AND ID FROM 15-PIN CONNECTOR
  3355.     AH = 12h
  3356.     BL = A1h
  3357. Return: BH = monitor ID (see #0032)
  3358.     BL = monitor type (00h color, 01h grayscale, 02h no display)
  3359. SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A2h
  3360.  
  3361. (Table 0032)
  3362. Values for Cirrus Logic monitor ID:
  3363.  00h-08h reserved
  3364.  09h    IBM 8604/8507 or equivalent
  3365.  0Ah    IBM 8514 or equivalent
  3366.  0Bh    IBM 8515 or equivalent
  3367.  0Dh    IBM 8503 or equivalent
  3368.  0Eh    IBM 8512/8513 or equivalent
  3369.  0Fh    no monitor
  3370. --------V-1012--BLA2-------------------------
  3371. INT 10 - Cirrus Logic BIOS - SET MONITOR HORIZONTAL RETRACE FREQUENCY
  3372.     AH = 12h
  3373.     BL = A2h
  3374.     AL = retrace rate
  3375.         00h standard VGA (31.5 kHz)
  3376.         01h 8514-compatible (31.5 kHz and 35.5 kHz interlaced)
  3377.         02h SuperVGA (31.5-35.1 kHz)
  3378.         03h extended SuperVGA (31.5-35.5 kHz)
  3379.         04h multi-frequency (31.5-37.8 kHz)
  3380.         05h extended multi-frequency (31.5-48.0 kHz)
  3381.         06h super multi-frequency (31.5-56.0 kHz)
  3382.         07h extended super multi-frequency (31.5-64.0 kHz)
  3383. Return: nothing
  3384. SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A0h,AH=12h/BL=A4h
  3385. --------V-1012--BLA3-------------------------
  3386. INT 10 - Cirrus Logic BIOS - SET VGA REFRESH
  3387.     AH = 12h
  3388.     BL = A3h
  3389.     AL = refresh rate for 640x480 (00h normal, 01h high)
  3390. Return: nothing
  3391. SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A4h
  3392. --------V-1012--BLA4-------------------------
  3393. INT 10 - Cirrus Logic BIOS - SET MONITOR TYPE
  3394.     AH = 12h
  3395.     BL = A4h
  3396.     AL bits 3-0 = maximum vertical resolution
  3397.         (0 = 480 scanlines, 1 = 600, 2 = 768, 3 = 1024, other reserved)
  3398.     AL bits 7-4 = vertical refresh at 640x480
  3399.         (0 = 60Hz, 1 = 72Hz, other reserved)
  3400.     BH bits 3-0 = vertical refresh at 800x600
  3401.         (0 = 56Hz, 1 = 60Hz, 2 = 72Hz, other reserved)
  3402.     BH bits 7-4 = vertical refresh at 1024x768
  3403.         (0=87Hz-int, 1=60Hz, 2=70Hz, 3=72Hz, 4=76Hz, other reserved)
  3404.     CH bits 4-7 = vertical refresh at 1280x1024
  3405.         (0=87Hz-int, 1=60Hz, 2=70Hz, other reserved)
  3406. Return: nothing
  3407. SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A3h
  3408. --------V-1012--BLBE-------------------------
  3409. INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
  3410.     AH = 12h
  3411.     BL = BEh
  3412. Note:    due to an omitted end-of-list marker, these versions of the BIOS will
  3413.       crash the system on this function
  3414. --------V-1012--BLC6-------------------------
  3415. INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
  3416.     AH = 12h
  3417.     BL = C6h
  3418. Note:    due to an omitted end-of-list marker, these versions of the BIOS will
  3419.       crash the system on this function
  3420. --------V-1012--BLF0-------------------------
  3421. INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
  3422.     AH = 12h
  3423.     BL = F0h
  3424. Note:    due to an omitted end-of-list marker, these versions of the BIOS will
  3425.       crash the system on this function
  3426. --------V-1012--BLF1--------------------------
  3427. INT 10 - Tseng ET-4000 BIOS - GET/SET SCREEN REFRESH RATE
  3428.     AH = 12h
  3429.     BL = F1h
  3430.     AL = subfunction
  3431.         00h set refresh rate
  3432.         01h get refresh rate
  3433.     BH = video mode
  3434.         00h     640x480
  3435.         01h     800x600
  3436.         02h     1024x768
  3437.         03h     1280x1024
  3438.     CX = new refresh rate (see #0033) if AL = 00h
  3439. Return: AL = 12h if supported
  3440.         CX = current rate (for AL=00h, a changed CX indicates failure)
  3441.  
  3442. (Table 0033)
  3443. Values for Tseng ET4000 refresh rate:
  3444.  CX    640x480    800x600      1024x768/1280x1024
  3445.  00h    60 Hz     56 Hz       interlaced
  3446.  01h    72 Hz     60 Hz       60 Hz
  3447.  02h    75 Hz     72 Hz       70 Hz
  3448.  03h    90 Hz     75 Hz       75 Hz    
  3449.  04h    --     90 Hz       --
  3450. --------V-1013-------------------------------
  3451. INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
  3452.     AH = 13h
  3453.     AL = write mode
  3454.        bit 0: update cursor after writing
  3455.        bit 1: string contains alternating characters and attributes
  3456.        bits 2-7: reserved (0)
  3457.     BH = page number
  3458.     BL = attribute if string contains only characters
  3459.     CX = number of characters in string
  3460.     DH,DL = row,column at which to start writing
  3461.     ES:BP -> string to write
  3462. Return: nothing
  3463. Notes:    recognizes CR, LF, BS, and bell; for the ET4000 BIOS, scrolling,
  3464.       backspace, and CR only take place in the active page
  3465.     also available PC or XT with EGA or higher
  3466.     HP 95LX only supports write mode 00h
  3467.     IBM documents AL=10h,11h,20h,21h as "private" rather than "reserved"
  3468. BUG:    on the IBM VGA Adapter, any scrolling which may occur is performed on
  3469.       the active page rather than the requested page
  3470. SeeAlso: AH=09h,AH=0Ah,AH=13h"DOS/V"
  3471. --------J-1013-------------------------------
  3472. INT 10 - DOS/V - READ/WRITE DOUBLE-BYTE CHARACTER SET CHARACTERS/ATTRIBUTES
  3473.     AH = 13h
  3474.     AL = function
  3475.         10h read characters and standard attributes
  3476.         11h read characters and extended attributes
  3477.         12h write characters and standard attributes
  3478.         13h write characters and extended attributes
  3479.     BH = 00h
  3480.     CX = number of characters to transfer
  3481.     DH,DL = row,column at which to start transfer
  3482.     ES:BP -> buffer for/containing characters and attributes (see #0034)
  3483. Return: ES:BP buffer filled if reading
  3484. Program: DOS/V is a Japanese-language version of MS-DOS which can run on
  3485.       standard (non-Japanese) ATs and compatible equipped with a VGA or
  3486.       newer video adapter
  3487. Notes:    subfunctions 11h and 13h are only valid when DOS/V is using video
  3488.       mode 73h
  3489.     the cursor position is not changed by these functions
  3490.     extended attributes consist of three bytes; the first is the standard
  3491.       character attribute byte, the second is as described below, and the
  3492.       third is always zero in current versions
  3493. SeeAlso: AH=00h,AH=13h"VIDEO"
  3494.  
  3495. Bitfields for DOS/V second extended attribute byte:
  3496. Bit(s)    Description    (Table 0034)
  3497.  7    underline using foreground color
  3498.  6    reverse foreground/background specified in standard attribute byte
  3499.  5-4    unused
  3500.  3    vertical white grid line in cell
  3501.  2    horizontal white grid line in cell
  3502.  1-0    unused
  3503. SeeAlso: #0013,#0025
  3504. --------V-101400-----------------------------
  3505. INT 10 - VIDEO - LOAD USER-SPECIFIED LCD CHARACTER FONT (CONV,Compaq Port 386)
  3506.     AX = 1400h
  3507.     ES:DI -> character font
  3508.     BH = number of bytes per character
  3509.         08h or 10h (Compaq)
  3510.     BL = 00h load main font (block 0)
  3511.          01h load alternate font (block 1)
  3512.     CX = number of characters to store
  3513.     DX = character offset into RAM font area
  3514. Return: nothing
  3515. SeeAlso: AX=1100h,AX=1110h,AX=1401h
  3516. --------V-101401-----------------------------
  3517. INT 10 - VIDEO - LOAD SYSTEM ROM DEFAULT LCD CHARACTER FONT (CONV,CP386)
  3518.     AX = 1401h
  3519.     BL = font to load
  3520.         00h main font (block 0)
  3521.         01h alternate font (block 1)
  3522. Return: nothing
  3523. SeeAlso: AX=1100h,AX=1102h,AX=1400h
  3524. --------V-101402-----------------------------
  3525. INT 10 - VIDEO - SET MAPPING OF LCD HIGH INTENSITY ATTRIBUTES (CONV,CP386)
  3526.     AX = 1402h
  3527.     BL = subfunction
  3528.         00h ignore high intensity attribute
  3529.         01h map high intensity to reverse video
  3530.         02h map high intensity to underscore
  3531.         03h map high intensity to selected alternate font
  3532.         B0h half intensity (Compaq)
  3533.         B1h toggle active intensity bit interpretation (CP386)
  3534. Return: nothing
  3535. --------V-1015-------------------------------
  3536. INT 10 - VIDEO - GET PHYSICAL DISPLAY PARAMETERS (CONVERTIBLE)
  3537.     AH = 15h
  3538. Return: AX = alternate display adapter type (see #0035)
  3539.     ES:DI -> parameter table (see #0036)
  3540. SeeAlso: AH=1Bh
  3541.  
  3542. (Table 0035)
  3543. Values for PC Convertible alternate display adapter type:
  3544.  0000h    none
  3545.  5140h    LCD
  3546.  5153h    CGA
  3547.  5151h    mono
  3548.  
  3549. Format of PC Convertible display parameter table:
  3550. Offset    Size    Description    (Table 0036)
  3551.  00h    WORD    monitor model number
  3552.  02h    WORD    vertical pixels per meter
  3553.  04h    WORD    horizontal pixels per meter
  3554.  06h    WORD    total vertical pixels
  3555.  08h    WORD    total horizontal pixels
  3556.  0Ah    WORD    horizontal pixel separation in micrometers
  3557.         (width, center-to-center)
  3558.  0Ch    WORD    vertical pixel separation in micrometers
  3559.         (height, center-to-center)
  3560. --------V-1015-------------------------------
  3561. INT 10 - VIDEO - SET SUPERIMPOSE MODE (Sperry PC)
  3562.     AH = 15h
  3563.     AL = superimpose mode
  3564.         00h show graphics screen
  3565.         01h show text screen
  3566.         02h show text screen superimposed on graphics screen
  3567. Return: nothing
  3568. --------J-1018-------------------------------
  3569. INT 10 - VIDEO - DOS/V - GET/SET FONT PATTERN
  3570.     AH = 18h
  3571.     AL = subfunction
  3572.         00h get font pattern
  3573.         01h set font pattern
  3574.     BX = 0000h
  3575.     CL = character size in bytes (01h,02h)
  3576.     CH = 00h
  3577.     DH = character width in pixels
  3578.     DL = character height in pixels
  3579.     ES:DI -> buffer for/containing font image
  3580. Return: AL = status (00h successful, else error)
  3581.     ES:DI buffer filled for function 00h if successful
  3582. Note:    the supported font sizes are 8x16 single-byte, 8x19 single-byte,
  3583.       16x16 double-byte, and 24x24 double-byte
  3584. SeeAlso: AH=19h,INT 16/AH=14h
  3585. --------V-1019-------------------------------
  3586. INT 10 - Japanese VIDEO - DOUBLE-BYTE CHARACTER SET SHIFT INFORMATION
  3587.     AH = 19h
  3588.     ???
  3589. Return: ???
  3590. SeeAlso: AH=18h,INT 16/AH=14h
  3591. --------V-101A00-----------------------------
  3592. INT 10 - VIDEO - GET DISPLAY COMBINATION CODE (PS,VGA/MCGA)
  3593.     AX = 1A00h
  3594. Return: AL = 1Ah if function was supported
  3595.         BL = active display code (see #0037)
  3596.         BH = alternate display code (see #0037)
  3597. Notes:    this function is commonly used to check for the presence of a VGA
  3598.     this function is supported on the ATI EGA Wonder with certain
  3599.       undocumented configuration switch settings, even though the EGA
  3600.       Wonder does not support VGA graphics; to distinguish this case,
  3601.       call AX=1C00h with CX nonzero, which the EGA Wonder does not support
  3602. SeeAlso: AH=12h/BL=35h,AX=1A01h,AH=1Bh,AH=1Ch,MEM 0040h:008Ah
  3603. Index:    installation check;VGA
  3604.  
  3605. (Table 0037)
  3606. Values for display combination code:
  3607.  00h    no display
  3608.  01h    monochrome adapter w/ monochrome display
  3609.  02h    CGA w/ color display
  3610.  03h    reserved
  3611.  04h    EGA w/ color display
  3612.  05h    EGA w/ monochrome display
  3613.  06h    PGA w/ color display
  3614.  07h    VGA w/ monochrome analog display
  3615.  08h    VGA w/ color analog display
  3616.  09h    reserved
  3617.  0Ah    MCGA w/ digital color display
  3618.  0Bh    MCGA w/ monochrome analog display
  3619.  0Ch    MCGA w/ color analog display
  3620.  FFh    unknown display type
  3621. --------V-101A01-----------------------------
  3622. INT 10 - VIDEO - SET DISPLAY COMBINATION CODE (PS,VGA/MCGA)
  3623.     AX = 1A01h
  3624.     BL = active display code (see #0037)
  3625.     BH = alternate display code
  3626. Return: AL = 1Ah if function was supported
  3627. SeeAlso: AH=12h/BL=35h,AX=1A00h
  3628. --------V-101B-------------------------------
  3629. INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
  3630.     AH = 1Bh
  3631.     BX = implementation type
  3632.         0000h return funtionality/state information
  3633.     ES:DI -> 64-byte buffer for state information (see #0038)
  3634. Return: AL = 1Bh if function supported
  3635.         ES:DI buffer filled with state information
  3636. BUG:    Trident 8900 (BIOS D3.0 11/12/91) and Trident 9000 (C3.0 10/25/91)
  3637.       do not correctly set the fields at offsets 27h and 29h of the
  3638.       state information
  3639. SeeAlso: AH=15h,AX=1A00h,AX=1F01h
  3640.  
  3641. Format of MCGA+ state information:
  3642. Offset    Size    Description    (Table 0038)
  3643.  00h    DWORD    address of static funtionality table (see #0043)
  3644.  04h    BYTE    video mode in effect
  3645.  05h    WORD    number of columns
  3646.  07h    WORD    length of regen buffer in bytes
  3647.  09h    WORD    starting address of regen buffer
  3648.  0Bh    WORD    cursor position for page 0
  3649.  0Dh    WORD    cursor position for page 1
  3650.  0Fh    WORD    cursor position for page 2
  3651.  11h    WORD    cursor position for page 3
  3652.  13h    WORD    cursor position for page 4
  3653.  15h    WORD    cursor position for page 5
  3654.  17h    WORD    cursor position for page 6
  3655.  19h    WORD    cursor position for page 7
  3656.  1Bh    WORD    cursor "type" (start/stop scan lines)
  3657.  1Dh    BYTE    active display page
  3658.  1Eh    WORD    CRTC port address
  3659.  20h    BYTE    current setting of PORT 03x8h
  3660.  21h    BYTE    current setting of PORT 03x9h
  3661.  22h    BYTE    number of rows - 1
  3662.  23h    WORD    bytes/character
  3663.  25h    BYTE    display combination code of active display
  3664.  26h    BYTE    DCC of alternate display
  3665.  27h    WORD    number of colors supported in current mode (0000h = mono)
  3666.  29h    BYTE    number of pages supported in current mode
  3667.  2Ah    BYTE    number of scan lines active
  3668.         (0,1,2,3) = (200,350,400,480)
  3669.         Tseng ET3000: (4,5,6 = 512,600,768)
  3670.  2Bh    BYTE    primary character block
  3671.  2Ch    BYTE    secondary character block
  3672.  2Dh    BYTE    miscellaneous flags (see #0039)
  3673.  2Eh    BYTE    non-VGA mode support (see #0040)
  3674.  2Fh  2 BYTEs    reserved (00h)
  3675.  31h    BYTE    video memory available
  3676.         00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K
  3677.  32h    BYTE    save pointer state flags (see #0041)
  3678.  33h    BYTE    display information and status (see #0042)
  3679.  34h 12 BYTEs    reserved (00h)
  3680.  
  3681. Bitfields for miscellaneous flags:
  3682. Bit(s)    Description    (Table 0039)
  3683.  0    all modes on all displays on
  3684.  1    gray summing on
  3685.  2    monochrome display attached
  3686.  3    default palette loading disabled
  3687.  4    cursor emulation enabled
  3688.  5    0 = intensity; 1 = blinking
  3689.  6    flat-panel display is active
  3690.  7    unused (0)
  3691. SeeAlso: #0038
  3692.  
  3693. Bitfields for non-VGA mode support:
  3694. Bit(s)    Description    (Table 0040)
  3695.  7-5    reserved
  3696.  4    132-column mode supported
  3697.  3    =1 MFI attributes enabled (see AH=12h/BL=37h)
  3698.     =0 VGA attributes
  3699.  2    16-bit VGA graphics present
  3700.  1    adapter interface driver required
  3701.  0    BIOS supports information return for adapter interface
  3702. SeeAlso: #0038
  3703.  
  3704. Bitfields for save pointer state flags:
  3705. Bit(s)    Description    (Table 0041)
  3706.  0    512 character set active
  3707.  1    dynamic save area present
  3708.  2    alpha font override active
  3709.  3    graphics font override active
  3710.  4    palette override active
  3711.  5    DCC override active
  3712.  6-7    unused (0)
  3713. SeeAlso: #0038
  3714.  
  3715. Bitfields for display information and status:
  3716. Bit(s)    Description    (Table 0042)
  3717.  7    640x480 flat-panel can be used simultaneously with CRT controller
  3718.  6-3    reserved
  3719.  2    color display
  3720.  1    flat-panel display active
  3721.  0    flat-panel display attached
  3722. SeeAlso: #0038
  3723.  
  3724. Format of Static Functionality Table:
  3725. Offset    Size    Description    (Table 0043)
  3726.  00h    BYTE    modes supported 1
  3727.         bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6,7 supported
  3728.  01h    BYTE    modes supported 2
  3729.         bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported
  3730.  02h    BYTE    modes supported 3
  3731.         bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported
  3732.         bit 4 to bit 7 unused (0)
  3733.  03h    BYTE    (IBM) reserved
  3734.         (Tseng ET3000/4000) modes supported 4
  3735.                 bit 0 to bit 7 = modes 18h-1Fh supported
  3736.  04h    BYTE    (IBM) reserved
  3737.         (Tseng ET3000/4000) modes supported 5
  3738.                 bit 0 to bit 7 = modes 20h-27h supported
  3739.  05h    BYTE    (IBM) reserved
  3740.         (Tseng ET3000/4000) modes supported 6
  3741.                 bit 0 to bit 7 = modes 28h-2Fh supported
  3742.  06h    BYTE    (IBM) reserved
  3743.         (Tseng ET3000/4000) modes supported 7
  3744.                 bit 0 to bit 7 = modes 30h-37h supported
  3745.  07h    BYTE    scan lines supported
  3746.         bit 0 to bit 2 = 1 if scan lines 200,350,400 supported
  3747.         bits 3-7 = unused (0)
  3748.  08h    BYTE    total number of character blocks available in text modes
  3749.  09h    BYTE    maximum number of active character blocks in text modes
  3750.  0Ah    WORD    miscellaneous function support flags (see #0044)
  3751.  0Ch    WORD    reserved
  3752.  0Eh    BYTE    save pointer function flags (see #0045)
  3753.  0Fh    BYTE    reserved
  3754. SeeAlso: #0038
  3755.  
  3756. Bitfields for miscellaneous function support flags:
  3757. Bit(s)    Description    (Table 0044)
  3758.  0    all modes on all displays function supported
  3759.  1    gray summing function supported
  3760.  2    character font loading function supported
  3761.  3    default palette loading enable/disable supported
  3762.  4    cursor emulation function supported
  3763.  5    EGA palette present
  3764.  6    color palette present
  3765.  7    color-register paging function supported
  3766.  8    light pen supported (see AH=04h)
  3767.  9    save/restore state function 1Ch supported
  3768.  10    intensity/blinking function supported (see AX=1003h)
  3769.  11    Display Combination Code supported (see #0037)
  3770.  12-15    unused (0)
  3771. SeeAlso: #0038
  3772.  
  3773. Bitfields for save pointer function flags:
  3774. Bit(s)    Description    (Table 0045)
  3775.  0    512 character set supported
  3776.  1    dynamic save area supported
  3777.  2    alpha font override supported
  3778.  3    graphics font override supported
  3779.  4    palette override supported
  3780.  5    DCC extension supported
  3781.  6-7    unused (0)
  3782. SeeAlso: #0038
  3783. --------V-101C-------------------------------
  3784. INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
  3785.     AH = 1Ch
  3786.     AL = function
  3787.         00h return state buffer size
  3788.         Return: BX = number of 64-byte blocks needed
  3789.         01h save video state
  3790.         ES:BX -> buffer
  3791.         02h restore video state
  3792.         ES:BX -> buffer containing previously saved state
  3793.     CX = requested states (see #0046)
  3794. Return: AL = 1Ch if function supported
  3795. Notes:    many BIOSes corrupt the video registers when saving the state, so a
  3796.       program should restore the state immediately after saving it (the
  3797.       saved data is uncorrupted)
  3798.     the BIOS data area consists of the 96 bytes from 0040h:0049h-00A8h
  3799.     this function is not supported when DOS/V is running
  3800.     this function may be a better VGA installation check than the usual
  3801.       INT 10/AX=1A00h, since some late-model EGA cards (such as the ATI
  3802.       EGA Wonder) supported that call
  3803. SeeAlso: AX=1A00h,MEM 0040h:00A8h
  3804.  
  3805. Bitfields for requested states:
  3806. Bit(s)    Description    (Table 0046)
  3807.  0    video hardware (see #0047)
  3808.  1    BIOS data areas
  3809.  2    color registers and DAC state (see #0048)
  3810.  3-15    unused (0)
  3811.  
  3812. Format of VGA video hardware state:
  3813. Offset    Size    Description    (Table 0047)
  3814.  00h    BYTE    sequencer index register
  3815.  01h    BYTE    CRTC index register
  3816.  02h    BYTE    graphics controller index register
  3817.  03h    BYTE    attribute controller index register
  3818.  04h    BYTE    feature controller register
  3819.  05h  4 BYTEs    sequencer registers
  3820.  09h    BYTE    sequencer register 0
  3821.  0Ah 25 BYTEs    CRTC registers 0-8
  3822.  23h 16 BYTEs    palette registers 00h-0Fh
  3823.  33h  4 BYTEs    attribute registers 10h-13h
  3824.  37h  9 BYTEs    graphics controller registers 0-8
  3825.  40h    BYTE    CRTC base address (low)
  3826.  41h    BYTE    CRTC base address (high)
  3827.  42h    BYTE    plane 0 latch
  3828.  43h    BYTE    plane 1 latch
  3829.  44h    BYTE    plane 2 latch
  3830.  45h    BYTE    plane 3 latch
  3831.  
  3832. Format of VGA DAC state:
  3833. Offset    Size    Description    (Table 0048)
  3834.  00h    BYTE    read/write mode DAC
  3835.  01h    BYTE    pixel address
  3836.  02h    BYTE    pixel mask
  3837.  03h 768 BYTEs    color data (256 triples)
  3838. 303h    BYTE    color select register
  3839. --------J-101D-------------------------------
  3840. INT 10 - VIDEO - DOS/V - SHIFT STATUS LINE CONTROL
  3841.     AH = 1Dh
  3842.     AL = function
  3843.         00h enable shift status line(s)
  3844.         BX = number of lines to reserve at bottom of screen (usu. 1)
  3845.         01h disable shift status line
  3846.         BX = number of lines reserved at bottom of screen (usually 1)
  3847.         02h get number of status lines
  3848.         Return: BX = number of lines reserved for shift status
  3849. SeeAlso: AH=19h
  3850. --------V-101D-------------------------------
  3851. INT 10 - SpeedSTAR Plus BIOS v4.23+ - SET SYNC PARAMETERS
  3852.     AH = 1Dh
  3853.     AL = video mode
  3854.     ES = caller's segment
  3855. Return: nothing
  3856. Note:    the caller's segment contains at offset 5Ch (FCB field in PSP)
  3857.       or 100h a table with sync parameters (see #0049) (BIOS looks at both
  3858.       offsets)
  3859.  
  3860. Format of SpeedSTAR Plus sync table:
  3861. Offset    Size    Description    (Table 0049)
  3862.  00h  9 BYTEs    ID contains string 'ey5CENTER'
  3863.  09h  5 BYTEs    sync parameters for 640x480 modes 11h,12h,25h,26h,2Eh
  3864.  0Bh  5 BYTEs    sync parameters for 800x600 modes 29h,30h,2Ah
  3865.  13h  5 BYTEs    sync parameters for 1024x768 modes 37h,38h
  3866. --------V-101D-------------------------------
  3867. INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
  3868.     AH = 1Dh
  3869. Note:    these versions of the BIOS jump to a random location on this function
  3870.       due to a fencepost error
  3871. --------V-101DAABXFDEC-----------------------
  3872. INT 10 U - Diamond Stealth64 Video - INSTALLATION CHECK
  3873.     AX = 1DAAh
  3874.     BX = FDECh
  3875. Return: BX = CDEFh if Diamond Stealth64 Video 2001-series video card installed
  3876.         AL = number of megabytes of video memory
  3877.         AH = ??? (4Bh/5Bh)
  3878.         CX = ??? (0000h)
  3879.         SI:DI -> signature/copyright string
  3880. --------V-101E00-----------------------------
  3881. INT 10 - VIDEO - FLAT-PANEL - READ INFORMATION
  3882.     AX = 1E00h
  3883. Return: AL = 1Eh if function supported
  3884.         BL = flat-panel status (see #0050)
  3885.         ES:DI -> information table (see #0051)
  3886. Note:    IBM classifies this function as optional
  3887. SeeAlso: AX=1E01h,AX=1E02h,AX=1E03h,AX=1E04h,AX=1E05h,AX=1EFEh
  3888.  
  3889. Bitfields for flat-panel status:
  3890. Bit(s)    Description    (Table 0050)
  3891.  7-3    reserved
  3892.  2    color display
  3893.  1    flat panel is active
  3894.  0    flat panel is attached
  3895. SeeAlso: #0051
  3896.  
  3897. Format of flat-panel information table:
  3898. Offset    Size    Description    (Table 0051)
  3899.  00h    BYTE    number of WORDs in the remainder of the table
  3900.  01h    WORD    number of vertical pixels per meter
  3901.  03h    WORD    number of horizontal pixels per meter
  3902.  05h    WORD    total number of vertical pixels
  3903.  07h    WORD    total number of horizontal pixels
  3904.  09h    WORD    vertical pixel separation in micrometers (center-to-center)
  3905.  0Bh    WORD    horizontal pixel separation in micrometers
  3906.  0Dh    WORD    range of gray levels available, less 1
  3907.  0Fh    WORD    number of red levels available, less 1 (0000h if nonochrome)
  3908.  11h    WORD    number of green levels available, less 1 (0000h if nonochrome)
  3909.  13h    WORD    number of blue levels available, less 1 (0000h if nonochrome)
  3910. SeeAlso: #0050
  3911. --------V-101E01-----------------------------
  3912. INT 10 - VIDEO - FLAT-PANEL - LCD/CRT DISPLAY CONTROL
  3913.     AX = 1E01h
  3914.     BH = function
  3915.         bit 7: =1 set display control, =0 query control
  3916.         bits 6-0: reserved (0)
  3917.     ---if BH bit 7 set---
  3918.     BL = new display combination (see #0052)
  3919. Return: AL = 1Eh if function supported
  3920.         BH = results
  3921.         bit 7: query/set (copied from input)
  3922.         bits 6-3: reserved (0)
  3923.         bit 2: simultaneous display is supported by hardware
  3924.         bit 1: LCD/CRT display control supported by hardware
  3925.         bit 0: set operation was successful (always clear on get)
  3926.         BL = active display combination (see #0052)
  3927. SeeAlso: AX=1E00h,AX=1E02h
  3928.  
  3929. Bitfields for Flat-Panel display combination:
  3930. Bit(s)    Description    (Table 0052)
  3931.  7-2    reserved (0)
  3932.  1-0    combination
  3933.     00 reserved
  3934.     01 LCD active
  3935.     10 CRT active
  3936.     11 both LCD and CRT active (simultaneous display)
  3937. SeeAlso: #0053
  3938. --------V-101E02-----------------------------
  3939. INT 10 - VIDEO - FLAT-PANEL - DISPLAY POSITION
  3940.     AX = 1E02h
  3941.     BH = function
  3942.         bit 7: =1 set display position, =0 query position
  3943.         bits 6-0: reserved (0)
  3944.     ---if BH bit 7 set---
  3945.     BL = new position setting (see #0053)
  3946. Return: AL = 1Eh if function supported
  3947.         BH = results
  3948.         bit 7: query/set (copied from input)
  3949.         bits 6-4: reserved (0)
  3950.         bit 3: positioning to top is supported by hardware
  3951.         bit 2: positioning to center is supported by hardware
  3952.         bit 1: positioning to bottom is supported by hardware
  3953.         bit 0: set operation was successful (always clear on get)
  3954.         BL = active position setting (see #0053)
  3955. SeeAlso: AX=1E00h,AX=1E01h
  3956.  
  3957. Bitfields for Flat-Panel position setting:
  3958. Bit(s)    Description    (Table 0053)
  3959.  7-2    reserved (0)
  3960.  1-0    position
  3961.     00 center
  3962.     01 top
  3963.     10 bottom
  3964.     11 reserved
  3965. SeeAlso: #0052,#0054
  3966. --------V-101E03-----------------------------
  3967. INT 10 - VIDEO - FLAT-PANEL - VERTICAL EXPANSION FOR TEXT/GRAPHICS MODES
  3968.     AX = 1E03h
  3969.     BH = function
  3970.         bit 7: =1 set vertical expansion, =0 query expansion
  3971.         bits 6-0: reserved (0)
  3972.     ---if BH bit 7 set---
  3973.     BL = new vertical expansion setting (see #0054)
  3974. Return: AL = 1Eh if function supported
  3975.         BH = results
  3976.         bit 7: query/set (copied from input)
  3977.         bits 6-4: reserved (0)
  3978.         bit 3: vertical expansion of text is supported by hardware
  3979.         bit 2: vertical expansion of graphics is supported by hardware
  3980.         bit 1: hardware supports independent control of expansion in
  3981.             text and graphics modes
  3982.         bit 0: set operation was successful (always clear on get)
  3983.         BL = active vertical expansion setting (see #0054)
  3984. SeeAlso: AX=1E00h,AX=1E02h.AX=1E04h
  3985.  
  3986. Bitfields for Flat-Panel vertical expansion setting:
  3987. Bit(s)    Description    (Table 0054)
  3988.  7-2    reserved (0)
  3989.  1    vertical expansion turned on for text modes
  3990.  0    vertical expansion turned on for graphics modes
  3991. SeeAlso: #0052,#0053,#0055
  3992. --------V-101E04-----------------------------
  3993. INT 10 - VIDEO - FLAT-PANEL - NORMAL/REVERSE VIDEO FOR TEXT/GRAPHICS MODES
  3994.     AX = 1E04h
  3995.     BH = function
  3996.         bit 7: =1 set normal/reverse video, =0 query normal/reverse
  3997.         bits 6-0: reserved (0)
  3998.     ---if BH bit 7 set---
  3999.     BL = new normal/reverse video setting (see #0055)
  4000. Return: AL = 1Eh if function supported
  4001.         BH = results
  4002.         bit 7: query/set (copied from input)
  4003.         bits 6-4: reserved (0)
  4004.         bit 3: hardware supports reverse video for text modes
  4005.         bit 2: hardware supports reverse video for graphics modes
  4006.         bit 1: hardware supports independent control of reverse video
  4007.               in text and graphics modes
  4008.         bit 0: set operation was successful (always clear on get)
  4009.         BL = active normal/reverse video setting (see #0055)
  4010. SeeAlso: AX=1E00h,AX=1E03h,AX=1E05h
  4011.  
  4012. Bitfields for Flat-Panel normal/reverse video setting:
  4013. Bit(s)    Description    (Table 0055)
  4014.  7-2    reserved (0)
  4015.  1    reverse video for text
  4016.  0    reverse video for graphics
  4017. SeeAlso: #0052,#0054,#0056,#0057
  4018. --------V-101E05-----------------------------
  4019. INT 10 - VIDEO - FLAT-PANEL - BRIGHTNESS CONTROL
  4020.     AX = 1E05h
  4021.     BH = function
  4022.         bit 7: =1 set brightness, =0 query brightness
  4023.         bits 6-0: reserved (0)
  4024.     ---if BH bit 7 set---
  4025.     BL = new brightness setting (see #0056)
  4026. Return: AL = 1Eh if function supported
  4027.         BH = results
  4028.         bit 7: query/set (copied from input)
  4029.         bits 6-2: reserved (0)
  4030.         bit 1: software brightness control is supported
  4031.         bit 0: set operation was successful (always clear on get)
  4032.         BL = active brightness setting (see #0056)
  4033. Note:    this function operates independently of AX=1E07h
  4034. SeeAlso: AX=1E00h,AX=1E04h,AX=1E06h,AX=1E07h
  4035.  
  4036. Bitfields for Flat-Panel brightness control:
  4037. Bit(s)    Description    (Table 0056)
  4038.  7-1    reserved (0)
  4039.  0    high brightness
  4040. SeeAlso: #0055,#0057
  4041. --------V-101E06-----------------------------
  4042. INT 10 - VIDEO - FLAT-PANEL - CONTRAST CONTROL FOR TEXT/GRAPHICS
  4043.     AX = 1E06h
  4044.     BH = function
  4045.         bit 7: =1 set contrast control, =0 query contrast
  4046.         bits 6-0: reserved (0)
  4047.     ---if BH bit 7 set---
  4048.     BL = new normal/reverse video setting (see #0057)
  4049. Return: AL = 1Eh if function supported
  4050.         BH = results
  4051.         bit 7: query/set (copied from input)
  4052.         bits 6-4: reserved (0)
  4053.         bit 3: software contrast control supported for text
  4054.         bit 2: software contrast control supported for graphics
  4055.         bit 1: hardware supports independent control of contrast
  4056.               in text and graphics modes
  4057.         bit 0: set operation was successful (always clear on get)
  4058.         BL = active contrast setting (see #0057)
  4059. Note:    this function operates independently of AX=1E08h
  4060. SeeAlso: AX=1E00h,AX=1E04h,AX=1E05h,AX=1E07h,AX=1E08h
  4061.  
  4062. Bitfields for Flat-Panel contrast control:
  4063. Bit(s)    Description    (Table 0057)
  4064.  7-2    reserved (0)
  4065.  1    high contrast for text
  4066.  0    high contrast for graphics
  4067. SeeAlso: #0055,#0056
  4068. --------V-101E07-----------------------------
  4069. INT 10 - VIDEO - FLAT-PANEL - BRIGHTNESS SETTING
  4070.     AX = 1E07h
  4071.     BH = function
  4072.         bit 7: =1 set brightness control, =0 query brightness
  4073.         bit 6: use standard brightness
  4074.         bits 5-0: reserved (0)
  4075.     ---if BH bits 7,6=10---
  4076.     BL = brightness (00h = minimum, FFh = maximum)
  4077. Return: AL = 1Eh if function supported
  4078.         BH = results
  4079.         bit 7: query/set (copied from input)
  4080.         bit 6: standard/custom (copied from input)
  4081.         bits 5-2: reserved (0)
  4082.         bit 1: software brightness control is supported
  4083.         bit 0: set operation was succesful (always clear on get)
  4084.         BL = brightness (00h = minimum, FFh = maximum)
  4085. Note:    this function operates independently of AX=1E05h
  4086. SeeAlso: AX=1E00h,AX=1E05h,AX=1E08h
  4087. --------V-101E08-----------------------------
  4088. INT 10 - VIDEO - FLAT-PANEL - CONTRAST SETTING
  4089.     AX = 1E08h
  4090.     BH = function
  4091.         bit 7: =1 set contrast control, =0 query contrast
  4092.         bit 6: use standard contrast
  4093.         bits 5-0: reserved (0)
  4094.     ---if BH bits 7,6=10---
  4095.     BL = contrast (00h = minimum, FFh = maximum)
  4096. Return: AL = 1Eh if function supported
  4097.         BH = results
  4098.         bit 7: query/set (copied from input)
  4099.         bit 6: standard/custom (copied from input)
  4100.         bits 5-2: reserved (0)
  4101.         bit 1: software contrast control is supported
  4102.         bit 0: set operation was succesful (always clear on get)
  4103.         BL = contrast (00h = minimum, FFh = maximum)
  4104. Note:    this function operates independently of AX=1E06h
  4105. SeeAlso: AX=1E00h,AX=1E06h,AX=1E07h
  4106. --------V-101EFE-----------------------------
  4107. INT 10 - VIDEO - FLAT-PANEL - FUNCTION SUPPORT FLAG
  4108.     AX = 1EFEh
  4109.     ES:DI -> DWORD buffer for bitmap of supported functions
  4110.         (set to all zeros before calling)
  4111. Return: ES:DI buffer updated with mask of supported functions
  4112. Index:    installation check;flat-panel display support
  4113. SeeAlso: AX=1E00h,AX=1E06h
  4114. --------V-101F00-----------------------------
  4115. INT 10 - VIDEO - XGA - GET DMQS (Display Mode Query and Set) DATA LENGTH
  4116.     AX = 1F00h
  4117. Return: AL = 1Fh if supported
  4118.         BX = number of bytes of DMQS data
  4119. Note:    not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
  4120.       and later models.
  4121. SeeAlso: AX=1F01h
  4122. --------V-101F01-----------------------------
  4123. INT 10 - VIDEO - XGA - READ DMQS DATA
  4124.     AX = 1F01h
  4125.     ES:DI -> user buffer for return data (call AX=1F00h for size)
  4126. Return: AL = 1Fh if function supported
  4127.     user buffer filled with DMQS data (see #0058)
  4128. Note:    not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
  4129.       and later models.
  4130. SeeAlso: AH=1Bh,AX=1F00h,AX=3000h
  4131.  
  4132. Format of XGA DMQS buffer:
  4133. Offset    Size    Description    (Table 0058)
  4134.  00h    WORD    offset (in bytes) to DMQS data for next XGA instance
  4135.  02h    BYTE    slot number
  4136.  03h    BYTE    XGA implementation function level identifier
  4137.  04h    BYTE    XGA implementation resolution level identifier
  4138.  05h    WORD    vendor identifier - identifies card vendor
  4139.  07h    WORD    vendor defined field
  4140.  09h    WORD    XGA adapter I/O register base address
  4141.  0Bh    WORD    XGA coprocessor register base address
  4142.         (paragraph--multiply by 10h to get physical address)
  4143.  0Dh    WORD    1 Megabyte system video memory aperture
  4144.         0000h if not allocated
  4145.         (Multiply by 100000h to get physical address)
  4146.  0Fh    WORD    4 Megabyte system video memory aperture
  4147.         0000h if not allocated
  4148.         (multiply by 100000h to get physical address)
  4149.  11h    WORD    video memory base address
  4150.         (multiply by 100000h to get physical address)
  4151.  13h    WORD    composite ID of the attached display
  4152.  15h    BYTE    amount of video memory available, in multiples of 256K bytes
  4153.  16h    DWORD    alternate XGA coprocessor register base address.  0 = none.
  4154.  1Ah    var    DMQS Data for further XGA Instances (as above)
  4155. Note:    "Instances" refers to the capability of having up to 8 XGA
  4156.       adapters in one computer.
  4157. SeeAlso: #0059
  4158. --------V-101F02-----------------------------
  4159. INT 10 - VIDEO - XGA - GET SVGA DMQS DATA LENGTH
  4160.     AX = 1F02h
  4161. Return: AL = 1Fh if function supported
  4162.         BX = length of SVGA DMQS data in bytes
  4163. SeeAlso: AX=1F00h,AX=1F03h
  4164. --------V-101F03-----------------------------
  4165. INT 10 - VIDEO - XGA - GET SVGA DMQS DATA
  4166.     AX = 1F03h
  4167.     ES:DI -> buffer for SVGA DMQS data (see #0059)
  4168. Return: AL = 1Fh if function supported
  4169.         ES:DI buffer filled
  4170. SeeAlso: AX=1F00h,AX=1F02h
  4171.  
  4172. Format of SVGA DMQS data:
  4173. Offset    Size    Description    (Table 0059)
  4174.  00h    WORD    offset to DMQS data for next SVGA instance or 0000h
  4175.  02h    BYTE    reserved
  4176.  03h    BYTE    SVGA implementation functional level
  4177.  04h    BYTE    SVGA implementation resolution level
  4178.  05h    WORD    vendor ID
  4179.  07h    WORD    vendor-specific
  4180.  09h  7 BYTEs    reserved
  4181.  10h    BYTE    SVGA linear address window size
  4182.         00h 64K
  4183.         01h 1M
  4184.         02h 2M
  4185.         03h 4M
  4186.  11h    WORD    SVGA linear address window location or 0000h if not allocated
  4187.         (multiply by 10000h [shift left 16 bits] to get physical addr)
  4188.  13h    WORD    attached monitor's composite monitor ID
  4189.  15h    BYTE    available video RAM in multiples of 256K
  4190.  16h 11 BYTEs    reserved
  4191. SeeAlso: #0058
  4192. --------V-103000CX0000-----------------------
  4193. INT 10 - VIDEO - LOCATE 3270PC CONFIGURATION TABLE (INSTALLATION CHECK)
  4194.     AX = 3000h
  4195.     CX = 0000h
  4196.     DX = 0000h
  4197. Return: CX:DX -> 3270PC configuration table (see #0060)
  4198.     CX:DX = 0000h:0000h if 3270PC Control Program not active
  4199. SeeAlso: AX=1F01h
  4200.  
  4201. Format of 3270 PC configuration table:
  4202. Offset    Size    Description    (Table 0060)
  4203.  00h    BYTE    aspect ratio X
  4204.  01h    BYTE    aspect ratio Y
  4205.  02h    BYTE    monitor type (see #0061)
  4206.  03h    BYTE    reserved
  4207.  04h    BYTE    adapter ID
  4208.         00h = 5151/5272 adapter
  4209.         04h = 5151/5272 with XGA adapter
  4210.         30h = 3295 or 3270PC G/GX adapter
  4211.  05h    BYTE    reserved
  4212.  06h    BYTE    function flags 1 (see #0062)
  4213.  07h    BYTE    function flags 2
  4214.         bit 6: GPI graphics supported
  4215.  08h    WORD    segment address of Control Program Level table (see #0063)
  4216.  0Ah 10 BYTEs    reserved
  4217.  
  4218. (Table 0061)
  4219. Values for 3270 PC monitor type:
  4220.  00h    5151 (mono) or 5272 (color)
  4221.  01h    3295
  4222.  02h    5151 or 5272 with XGA (???) graphics adapter
  4223.  03h    5279 with 3270PC G adapter
  4224.  04h    5379 model C01 with 3270PC GX adapter
  4225.  05h    5379 model M01 with 3270PC GX adapter
  4226.  07h    non-3270PC with 3270 Workstation Program
  4227.  FFh    3270PC Control Program not loaded
  4228.  
  4229. Bitfields for 3270 PC function flags 1:
  4230. Bit(s)    Description    (Table 0062)
  4231.  7    mono text, 1 page
  4232.  6    color text, 1 page
  4233.  5    color text, 4 pages
  4234.  4    CGA color graphics
  4235.  3    720x350 two-color graphics
  4236.  2    360x350 four-color graphics
  4237.  1    720x350 eight-color graphics
  4238.  
  4239. Format of Control Program Level table:
  4240. Offset    Size    Description    (Table 0063)
  4241.  00h    WORD    program version
  4242.         02xxh = 3270PC Control Program v2.xx
  4243.         03xxh = 3270PC Control Program v3.xx
  4244.         04xxh = 3270 Workstation Program v1.xx
  4245.  02h    BYTE    Control Program ID (00h)
  4246.  03h 27 BYTEs    Control Program Descriptor ("IBM 3270 PC CONTROL PROGRAM")
  4247. --------a-103800-----------------------------
  4248. INT 10 - Tinytalk Personal v1.09f+ - GET CONFIGURATION INFO
  4249.     AX = 3800h
  4250. Return: ES:DI -> configuration info (see #0064)
  4251. Program: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman
  4252. Notes:    this call is also used as the installation check by verifying that the
  4253.       returned ES:DI points at valid configuration info
  4254.     Tinytalk v1.09f ignores AL and always returns the configuration info;
  4255.       v1.10 adds several subfunctions selected with AL
  4256. SeeAlso: AX=3801h,AX=3803h,AX=3806h,AH=39h,INT 14/AX=F0F1h
  4257. SeeAlso: INT 2F/AX=FB00h"AutoBraille"
  4258. Index:    installation check;Tinytalk Personal
  4259.  
  4260. Format of Tinytalk Personal configuration info:
  4261. Offset    Size    Description    (Table 0064)
  4262.  00h  8 BYTEs    signature "TTCONFIG"
  4263.  08h    WORD    size of configuration data, not counting signature, this WORD,
  4264.           or the following byte
  4265.  0Ah    BYTE    ???
  4266.  0Bh    ???    configuration data
  4267. --------a-103801-----------------------------
  4268. INT 10 - Tinytalk Personal v1.10 - ???
  4269.     AX = 3801h
  4270.     DL = ???
  4271. Return: ???
  4272. SeeAlso: AX=3800h,AX=3802h
  4273. --------a-103802-----------------------------
  4274. INT 10 - Tinytalk Personal v1.10 - ???
  4275.     AX = 3802h
  4276.     DL = ???
  4277. Return: ???
  4278. SeeAlso: AX=3800h,AX=3801h
  4279. --------a-103803-----------------------------
  4280. INT 10 - Tinytalk Personal v1.10 - GET ???
  4281.     AX = 3803h
  4282. Return: AL = ???
  4283. SeeAlso: AX=3800h,AX=3804h,AX=3805h
  4284. --------a-103804-----------------------------
  4285. INT 10 - Tinytalk Personal v1.10 - GET ???
  4286.     AX = 3804h
  4287. Return: AX = ???
  4288. SeeAlso: AX=3800h,AX=3803h,AX=3805h
  4289. --------a-103805-----------------------------
  4290. INT 10 - Tinytalk Personal v1.10 - GET ???
  4291.     AX = 3805h
  4292. Return: AL = ???
  4293. SeeAlso: AX=3800h,AX=3803h,AX=3804h
  4294. --------a-103806-----------------------------
  4295. INT 10 - Tinytalk Personal v1.10 - ???
  4296.     AX = 3806h
  4297.     ES:DX -> ASCIZ ???
  4298. Return: ???
  4299. SeeAlso: AX=3800h
  4300. --------a-1039-------------------------------
  4301. INT 10 - Tinytalk Personal v1.10 - ???
  4302.     AH = 39h
  4303. Program: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman
  4304. Note:    this function was a NOP in TTDEMO.EXE, but may be implemented in other
  4305.       variants of Tinytalk
  4306. --------V-1040-------------------------------
  4307. INT 10 - VIDEO - SET GRAPHICS MODE (Hercules GRAFIX)
  4308.     AH = 40h
  4309. Return: nothing
  4310. Desc:    switch the Hercules Graphics Card into graphics mode (720x348)
  4311. SeeAlso: AH=00h,AH=41h
  4312. Index:    video modes;Hercules
  4313. --------V-1041-------------------------------
  4314. INT 10 - VIDEO - SET TEXT MODE (Hercules GRAFIX)
  4315.     AH = 41h
  4316. Return: nothing
  4317. Desc:    switch the Hercules Graphics Card into text mode
  4318. SeeAlso: AH=00h,AH=40h
  4319. Index:    video modes;Hercules
  4320. --------V-1042-------------------------------
  4321. INT 10 - VIDEO - CLEAR CURRENT PAGE (Hercules GRAFIX)
  4322.     AH = 42h
  4323. Return: nothing
  4324. SeeAlso: AH=45h
  4325. --------V-1043-------------------------------
  4326. INT 10 - VIDEO - SELECT DRAWING PAGE (Hercules GRAFIX)
  4327.     AH = 43h
  4328.     AL = page number (0,1)
  4329. Return: nothing
  4330. Desc:    specify which of the two pages of video memory is to be used for
  4331.       output
  4332. SeeAlso: AH=05h,AH=44h,AH=45h
  4333. --------V-1044-------------------------------
  4334. INT 10 - VIDEO - SELECT DRAWING FUNCTION (Hercules GRAFIX)
  4335.     AH = 44h
  4336.     AL = drawing function
  4337.         00h clear pixels
  4338.         01h set pixels
  4339.         02h invert pixels
  4340. Return: nothing
  4341. Desc:    specify how graphics output will change the display
  4342. SeeAlso: AH=45h,AH=46h,AH=4Ch,AH=4Dh
  4343. --------V-1045-------------------------------
  4344. INT 10 - VIDEO - SELECT PAGE TO DISPLAY (Hercules GRAFIX)
  4345.     AH = 45h
  4346.     AL = page number (0,1)
  4347. Return: nothing
  4348. Desc:    specify which of the two pages of video memory is visible on screen
  4349. SeeAlso: AH=05h,AH=42h,AH=43h
  4350. --------V-1046-------------------------------
  4351. INT 10 - VIDEO - DRAW ONE PIXEL (Hercules GRAFIX)
  4352.     AH = 46h
  4353.     DI = x (0-719)
  4354.     BP = y (0-347)
  4355. Return: nothing
  4356. Note:    function 44h determines operation and function 43h which page to use
  4357. SeeAlso: AH=0Ch,AH=47h,AH=49h,AH=4Ch,AH=4Dh
  4358. --------V-1047-------------------------------
  4359. INT 10 - VIDEO - FIND PIXEL VALUE (Hercules GRAFIX)
  4360.     AH = 47h
  4361.     DI = x (0-719)
  4362.     BP = y (0-347)
  4363. Return: AL = 00h pixel clear
  4364.     AL = 01h pixel set
  4365. Note:    function 43h specifies which page is used
  4366. SeeAlso: AH=0Dh,AH=46h
  4367. --------V-1048-------------------------------
  4368. INT 10 - VIDEO - MOVE TO POINT (Hercules GRAFIX)
  4369.     AH = 48h
  4370.     DI = x (0-719)
  4371.     BP = y (0-347)
  4372. Return: nothing
  4373. Desc:    specify the location from which to start the next graphics output
  4374. SeeAlso: AH=49h
  4375. --------V-1049-------------------------------
  4376. INT 10 - VIDEO - DRAW TO POINT (Hercules GRAFIX)
  4377.     AH = 49h
  4378.     DI = x (0-719)
  4379.     BP = y (0-347)
  4380. Return: nothing
  4381. Note:    function 48h or 49h specify first point, 44h operation and 43h page to
  4382.       use
  4383. SeeAlso: AH=43h,AH=44h,AH=48h,AH=4Ch,AH=4Dh
  4384. --------V-104A-------------------------------
  4385. INT 10 - VIDEO - BLOCK FILL (Hercules GRAFIX)
  4386.     AH = 4Ah
  4387.     DI = x coordinate of lower left corner
  4388.     BP = y coordinate of lower left corner
  4389.     BX = height in pixels
  4390.     CX = width in pixels
  4391. Return: nothing
  4392. Desc:    draw a solid rectangle of the specified size at the given location
  4393. SeeAlso: AH=4Eh
  4394. --------V-104B-------------------------------
  4395. INT 10 - VIDEO - DISPLAY CHARACTER (Hercules GRAFIX)
  4396.     AH = 4Bh
  4397.     AL = character to display
  4398.     DI = x (0-719)
  4399.     BP = y (0-347)
  4400. Return: nothing
  4401. Note:    unlike the other BIOS character functions character position is
  4402.       specified in pixels rather than rows and columns
  4403. SeeAlso: AH=09h,AH=0Ah
  4404. --------P-104B-------------------------------
  4405. INT 10 - FRIEZE - API
  4406.     AH = 4Bh
  4407.     CL = function
  4408.         00h (v6.x-) print window
  4409.         AL = mode
  4410.             00h character
  4411.             01h normal
  4412.             02h sideways
  4413.         01h load window
  4414.         ES:BX -> ASCIZ filename from which to read
  4415.         02h save window
  4416.         ES:BX -> ASCIZ filename to which to write
  4417.         03h set print width
  4418.         AL = width in 1/4 inches
  4419.         04h set print height
  4420.         AL = height in 1/4 inches
  4421.         05h reserved
  4422.         06h set left margin
  4423.         AL = printout margin in 1/4 inches
  4424.         07h set window size
  4425.         ES:BX -> four-WORD structure with Xmin, Ymin, Xmax, Ymax
  4426.         08h reserved
  4427.         09h set patterns
  4428.         ES:BX -> 16-BYTE vector of screen->printer color correspondnces
  4429.         0Ah get patterns
  4430.         ES:BX -> 16-BYTE buffer for color correspondences
  4431.         0Bh set mode
  4432.         AL = mode
  4433.         0Ch (v7.41) ???
  4434.         AL = ???
  4435.             00h ??? (calls original INT 05)
  4436.             else ???
  4437.         0Dh (v7.41) ???
  4438.         AL = ???
  4439.             00h ??? (calls original INT 05)
  4440.             else ???
  4441.         0Eh (v7.41) ???
  4442.         ???
  4443.         0Fh get window
  4444.         ES:BX -> four-WORD buffer for Xmin, Ymin, Xmax, Ymax
  4445.         10h set print options
  4446.         ES:BX -> printer options in same format as FRIEZE cmdline
  4447.         11h initialize
  4448.         ES:BX -> three-WORD array from CARDS.DAT for HRes, VRes, code
  4449.         12h (v7.41) ???
  4450.         ???
  4451.         13h (v7.41) ???
  4452.         ???
  4453.         14h get version
  4454.         Return: AH = major version (00h if FRIEZE version before 7)
  4455.             AL = minor version
  4456.         15h set parameters
  4457.         ES:BX -> parameter table (see #0066)
  4458.         16h get parameters
  4459.         ES:BX -> buffer for parameter table (see #0066)
  4460.         17h get printer resolution
  4461.         ES:BX -> 12-WORD table for six horizontal/vertical resol pairs
  4462.         18h (v8.0 only) reserved
  4463.         50h (v7.41) get ???
  4464.         Return: AX = ???
  4465.         51h (v7.41) get ???
  4466.         Return: ES = ??? (seen 2348h)
  4467.             AX = ??? (seen 8432h)
  4468. Return: AX = status (see #0065)
  4469. SeeAlso: AH=0Fh/SI=F123h
  4470.  
  4471. (Table 0065)
  4472. Values for FRIEZE function status:
  4473.  00h    successful
  4474.  01h    user aborted printout with ESC
  4475.  02h    reserved
  4476.  03h    file read error
  4477.  04h    file write error or printer error
  4478.  05h    file not found
  4479.  06h    invalid header (not an image or wrong screen mode) or can't create file
  4480.  07h    file close error
  4481.  08h    disk error
  4482.  09h    (v7.0+) printer error
  4483.  0Ah    invalid function
  4484.  0Bh    (v7.0+) can't create file
  4485.  0Ch    (v7.0+) wrong video mode
  4486.  
  4487. Format of FRIEZE parameter table:
  4488. Offset    Size    Description    (Table 0066)
  4489.  00h    WORD    top margin (1/100 inch)
  4490.  02h    WORD    left margin (1/100 inch)
  4491.  04h    WORD    horizontal size (1/100 inch)
  4492.  06h    WORD    vertical size (1/100 inch)
  4493.  08h    WORD    quality/draft mode
  4494.         00h draft mode
  4495.         01h quality mode
  4496.         02h use horizontal/vertical resolution for output resolution
  4497.  0Ah    WORD    printer horizontal resolution (dots per inch)
  4498.  0Ch    WORD    printer vertical resolution (dots per inch)
  4499.  0Eh    WORD    reserved (FFFFh)
  4500. Note:    any field which should remain unchanged may be filled with FFFFh
  4501. --------V-104C-------------------------------
  4502. INT 10 - VIDEO - DRAW ARC (Hercules GRAFIX)
  4503.     AH = 4Ch
  4504.     AL = quadrant (1 = upper right, 2 = upper left, etc)
  4505.     DI = x coordinate of center
  4506.     BP = y coordinate of center
  4507.     BX = radius
  4508. Return: nothing
  4509. SeeAlso: AH=49h,AH=4Dh
  4510. --------V-104D-------------------------------
  4511. INT 10 - VIDEO - DRAW CIRCLE (Hercules GRAFIX)
  4512.     AH = 4Dh
  4513.     DI = x of center
  4514.     BP = y of center
  4515.     BX = radius
  4516. Return: nothing
  4517. SeeAlso: AH=49h,AH=4Ch
  4518. --------V-104E-------------------------------
  4519. INT 10 - VIDEO - FILL AREA (Hercules GRAFIX)
  4520.     AH = 4Eh
  4521.     DI = x coordinate of an interior point
  4522.     BP = y coordinate of an interior point
  4523. Return: nothing
  4524. Desc:    fill a convex polygonal area bounded by a contiguous line of the
  4525.       opposite color with the border color
  4526. Note:    the first fill makes the figure solid, the second erases it
  4527. SeeAlso: AH=4Ah
  4528. --------V-104E00-----------------------------
  4529. INT 10 - VESA XGA BIOS Extensions - GET XGA ENVIRONMENT INFORMATION
  4530.     AX = 4E00h
  4531.     ES:DI -> 256-byte buffer for XGA information (see #0067)
  4532. Return: AL = 4Eh if function supported
  4533.         AH = status
  4534.         00h successful
  4535.         else error code
  4536. Desc:    determine whether VESA XGA extensions are present and the capabilities
  4537.       supported by the display adapter
  4538. SeeAlso: AX=4E01h,AX=4E02h,AX=4F00h
  4539. Index:    installation check;VESA XGA
  4540.  
  4541. Format of XGA information buffer:
  4542. Offset    Size    Description    (Table 0067)
  4543.  00h  4 BYTEs    signature ("VESA")
  4544.  04h    WORD    VESA version number
  4545.  06h    DWORD    pointer to ASCIZ OEM string
  4546.  0Ah    DWORD    environment flags (see #0068)
  4547.  0Eh    WORD    number of XGA adapters installed (other VESA XGA functions
  4548.           require a handle indicating which adapter to use)
  4549.  10h 240 BYTEs    reserved
  4550.  
  4551. Bitfields for XGA environment flags:
  4552. Bit(s)    Description    (Table 0068)
  4553.  0-1    system bus (00 = MCA, 01 = ISA, 10 = EISA)
  4554.  2    bus mastering available
  4555.  3-31    reserved
  4556. --------V-104E01----------------------------
  4557. INT 10 - VESA XGA BIOS Extensions - RETURN XGA SUBSYSTEM INFORMATION
  4558.     AX = 4E01h
  4559.     DX = XGA handle (0 to number of XGAs-1)
  4560.     ES:DI -> 256-byte buffer for subsystem information (see #0069)
  4561. Return: AL = 4Eh if function supported
  4562.     AH = status
  4563.         00h     function successful
  4564.         else error code
  4565. SeeAlso: AX=4E00h,AX=4E02h
  4566.  
  4567. Format of XGA subsystem information:
  4568. Offset    Size    Description    (Table 0069)
  4569.  00h    DWORD    pointer to null-terminated board OEM string
  4570.  04h    DWORD    capabilities (see #0070)
  4571.  08h    DWORD    pointer to 8KB XGA ROM (or NULL)
  4572.  0Ch    DWORD    pointer to the XGA memory mapped registers
  4573.  10h    WORD    base address of XGA I/O registers (21x0h)
  4574.  12h    DWORD    pointer to start of physical video memory
  4575.         (A000h:0000h or B000h:0000h)
  4576.  16h    DWORD    physical address of 4MB aperture (or NULL if none)
  4577.  1Ah    DWORD    physical address of 1MB aperture (or NULL if none)
  4578.  1Eh    DWORD    physical address of 64KB aperture (or NULL if not enabled)
  4579.  22h    DWORD    physical address of OEM aperture (or NULL if none)
  4580.  26h    WORD    size of OEM aperture in 64KByte units
  4581.  28h    DWORD    pointer to list of video modes
  4582.         The list is a series of WORDs terminated by FFFFh
  4583.  2Ch    WORD    number of 64KB blocks on the board
  4584.  2Eh    DWORD    XGA manufacturer ID
  4585.         byte 0 POS data index 1
  4586.         byte 1 is index 2
  4587.         byte 2 is 21xAh index 75h
  4588.  32h 206 BYTEs    reserved
  4589.  
  4590. Bitfields for XGA capabilities:
  4591. Bit(s)    Description    (Table 0070)
  4592.  0-1    board bus architecture: 0=MCA, 1=ISA, 3=EISA
  4593.  2-3    reserved
  4594.  4-6    DMA Channel assigned for acquiring bus mastership (only for ISA bus)
  4595.  7    DMA Channel Status (ISA only). enabled if set
  4596.  8-31    reserved
  4597. --------V-104E02-----------------------------------
  4598. INT 10 - VESA XGA BIOS Extensions - RETURN XGA MODE INFORMATION
  4599.     AX = 4E02h
  4600.     CX = Video mode
  4601.     DX = XGA handle
  4602.     ES:DI -> 256 byte buffer for mode information (see #0071)
  4603. Return: AL = 4Eh if function supported
  4604.     AH = status
  4605.         00h     function successful
  4606.         else error code
  4607. SeeAlso: AX=4E00h,AX=4E01h
  4608.  
  4609. Format of XGA mode information:
  4610. Offset    Size    Description    (Table 0071)
  4611.  00h    WORD    attributes of the mode (see #0072)
  4612.  02h    WORD    bytes per logical scanline
  4613.  04h    WORD    horizontal resolution in pixels
  4614.  06h    WORD    vertical resolution in scanlines
  4615.  08h    BYTE    character Width in pixels
  4616.  09h    BYTE    character Height in pixels
  4617.  0Ah    BYTE    number of planes
  4618.  0Bh    BYTE    bits per pixels
  4619.  0Ch    BYTE    memory model (see #0073)
  4620.  0Dh    BYTE    number of Image Pages
  4621.  0Eh    BYTE    number of Red bits
  4622.  0Fh    BYTE    bit position of Red bit field
  4623.  10h    BYTE    number of Green bits
  4624.  11h    BYTE    bit position of Green bit field
  4625.  12h    BYTE    number of Blue bits
  4626.  13h    BYTE    bit position of Blue bit field
  4627.  14h    BYTE    number of Reserved bits
  4628.  15h    BYTE    bit position of Reserved bit field
  4629.  16h 235 BYTEs    reserved
  4630.  
  4631. Bitfields for XGA mode attributes:
  4632. Bit(s)    Description    (Table 0072)
  4633.  0    set if mode is supported
  4634.  1    reserved
  4635.  2    output is supported by the BIOS
  4636.  3    reserved
  4637.  4    if set this is a graphics mode (VGA registers inactive, XGA active),
  4638.       if clear this is a text mode (VGA registers active, XGA inactive)
  4639.  
  4640. (Table 0073)
  4641. Values for XGA video memory model:
  4642.  00h    Text Mode
  4643.  01h    CGA graphics
  4644.  02h    Hercules graphics
  4645.  03h    4-planar graphics
  4646.  04h    Packed Pixel
  4647.  05h    Non-chain 4, 256 color
  4648.  06h    Direct Color
  4649.  07h    YUV-24
  4650. --------V-104E03-----------------------------------
  4651. INT 10 - VESA XGA BIOS Extensions - SET XGA VIDEO MODE
  4652.     AX = 4E03h
  4653.     BX = video mode
  4654.     CX = other command flags
  4655.          bit 0  If clear the feature connector is set to the default state
  4656.     DX = XGA handle
  4657.     ES:DI -> 256 byte buffer
  4658. Return: AL = 4Eh if function supported
  4659.     AH = status
  4660.         00h     function successful
  4661.         else error code
  4662. SeeAlso: AH=00h,AX=4E04h,AX=4F02h
  4663. --------V-104E04-----------------------------------
  4664. INT 10 - VESA XGA BIOS Extensions - RETURN CURRENT VIDEO MODE
  4665.     AX = 4E04h
  4666.     DX = XGA handle
  4667. Return: AL = 4Eh if function supported
  4668.     AH = status
  4669.         00h     function successful
  4670.         BX??? = current mode
  4671.         else error code
  4672. SeeAlso: AH=0Fh,AX=4E03h,AX=4F03h
  4673. --------V-104E05-----------------------------------
  4674. INT 10 - VESA XGA BIOS Extensions - SET FEATURE CONNECTOR STATE
  4675.     AX = 4E05h
  4676.     BX = Feature Connector State (see #0074)
  4677.     DX = XGA handle
  4678. Return: AL = 4Eh if function supported
  4679.     AH = status
  4680.         00h     function successful
  4681.         else error code
  4682. SeeAlso: AX=4E00h,AX=4E06h
  4683.  
  4684. Bitfields for XGA Feature Connector State:
  4685. Bit(s)    Description    (Table 0074)
  4686.  0    Feature Connector is enabled
  4687.  1    Feature Connector is in Output Mode rather than Input Mode
  4688.  2-15    reserved (0)
  4689. --------V-104E06-----------------------------------
  4690. INT 10 - VESA XGA BIOS Extensions - RETURN FEATURE CONNECTOR STATE
  4691.     AX = 4E06h
  4692.     DX = XGA handle
  4693. Return: AL = 4Eh if function supported
  4694.     AH = status
  4695.         00h     function successful
  4696.         else error code
  4697.     BX = Feature Connector State (see #0074)
  4698. SeeAlso: AX=4E00h,AX=4E05h
  4699. --------V-104F00-----------------------------
  4700. INT 10 - VESA SuperVGA BIOS (VBE) - GET SuperVGA INFORMATION
  4701.     AX = 4F00h
  4702.     ES:DI -> buffer for SuperVGA information (see #0075)
  4703. Return: AL = 4Fh if function supported
  4704.     AH = status
  4705.         00h successful
  4706.         ES:DI buffer filled
  4707.         01h failed
  4708.         ---VBE v2.0---
  4709.         02h function not supported by current hardware configuration
  4710.         03h function invalid in current video mode
  4711. Desc:    determine whether VESA BIOS extensions are present and the capabilities
  4712.       supported by the display adapter
  4713. SeeAlso: AX=4E00h,AX=4F01h,AX=7F00h"SOLLEX",AX=A00Ch
  4714. Index:    installation check;VESA SuperVGA
  4715.  
  4716. Format of SuperVGA information:
  4717. Offset    Size    Description    (Table 0075)
  4718.  00h  4 BYTEs    (ret) signature ("VESA")
  4719.         (call) VESA 2.0 request signature ("VBE2"), required to receive
  4720.           version 2.0 info
  4721.  04h    WORD    VESA version number (one-digit minor version)
  4722.  06h    DWORD    pointer to OEM name
  4723.         "761295520" for ATI
  4724.  0Ah    DWORD    capabilities flags (see #0076)
  4725.  0Eh    DWORD    pointer to list of supported VESA and OEM video modes
  4726.         (list of words terminated with FFFFh)
  4727.  12h    WORD    total amount of video memory in 64K blocks
  4728. ---VBE v1.x ---
  4729.  14h 236 BYTEs    reserved
  4730. ---VBE v2.0 ---
  4731.  14h    WORD    OEM software version
  4732.  16h    DWORD    pointer to vendor name
  4733.  1Ah    DWORD    pointer to product name
  4734.  1Eh    DWORD    pointer to product revision string
  4735.  22h 222 BYTEs    reserved
  4736. 100h 256 BYTEs    OEM scratchpad
  4737. Notes:    the list of supported video modes is stored in the reserved portion of
  4738.       the SuperVGA information record by some implementations, and it may
  4739.       thus be necessary to either copy the mode list or use a different
  4740.       buffer for all subsequent VESA calls
  4741.     the 1.1 VESA document specifies 242 reserved bytes at the end, so the
  4742.       buffer should be 262 bytes to ensure that it is not overrun; for
  4743.       v2.0, the buffer should be 512 bytes
  4744.     the S3 specific video modes will most likely follow the FFFFh
  4745.       terminator at the end of the standard modes.    A search must then
  4746.       be made to find them, FFFFh will also terminate this second list
  4747.  
  4748. Bitfields for VESA capabilities:
  4749. Bit(s)    Description    (Table 0076)
  4750.  0    DAC can be switched into 8-bit mode
  4751.  1    non-VGA controller
  4752.  2    programmed DAC with blank bit
  4753.  3-31    reserved
  4754. SeeAlso: #0075
  4755. --------V-104F01-----------------------------
  4756. INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
  4757.     AX = 4F01h
  4758.     CX = SuperVGA video mode
  4759.     ES:DI -> 256-byte buffer for mode information (see #0077)
  4760. Return: AL = 4Fh if function supported
  4761.     AH = status
  4762.         00h successful
  4763.         ES:DI buffer filled
  4764.         01h failed
  4765. Desc:    determine the attributes of the specified video mode
  4766. SeeAlso: AX=4F00h,AX=4F02h
  4767.  
  4768. Format of VESA SuperVGA mode information:
  4769. Offset    Size    Description    (Table 0077)
  4770.  00h    WORD    mode attributes (see #0078)
  4771.  02h    BYTE    window attributes, window A (see #0079)
  4772.  03h    BYTE    window attributes, window B (see #0079)
  4773.  04h    WORD    window granularity in KB
  4774.  06h    WORD    window size in KB
  4775.  08h    WORD    start segment of window A
  4776.  0Ah    WORD    start segment of window B
  4777.  0Ch    DWORD    -> FAR window positioning function (equivalent to AX=4F05h)
  4778.  10h    WORD    bytes per scan line
  4779. ---remainder is optional for VESA modes in v1.0/1.1, needed for OEM modes---
  4780.  12h    WORD    width in pixels (graphics) or characters (text)
  4781.  14h    WORD    height in pixels (graphics) or characters (text)
  4782.  16h    BYTE    width of character cell in pixels
  4783.  17h    BYTE    height of character cell in pixels
  4784.  18h    BYTE    number of memory planes
  4785.  19h    BYTE    number of bits per pixel
  4786.  1Ah    BYTE    number of banks
  4787.  1Bh    BYTE    memory model type (see #0080)
  4788.  1Ch    BYTE    size of bank in KB
  4789.  1Dh    BYTE    number of image pages
  4790.  1Eh    BYTE    reserved (0)
  4791. ---VBE v1.2+---
  4792.  1Fh    BYTE    red mask size
  4793.  20h    BYTE    red field position
  4794.  21h    BYTE    green mask size
  4795.  22h    BYTE    green field size
  4796.  23h    BYTE    blue mask size
  4797.  24h    BYTE    blue field size
  4798.  25h    BYTE    reserved mask size
  4799.  26h    BYTE    reserved mask position
  4800.  27h    BYTE    direct color mode info
  4801.         bit 0: color ramp is programmable
  4802.         bit 1: bytes in reserved field may be used by application
  4803. ---VBE v2.0 ---
  4804.  28h    DWORD    physical address of linear video buffer
  4805.  2Ch    DWORD    pointer to start of offscreen memory
  4806.  30h    WORD    KB of offscreen memory
  4807.  32h 206 BYTEs    reserved (0)
  4808.  
  4809. Bitfields for VESA SuperVGA mode attributes:
  4810. Bit(s)    Description    (Table 0078)
  4811.  0    mode supported
  4812.  1    optional information available
  4813.  2    BIOS output supported
  4814.  3    set if color, clear if monochrome
  4815.  4    set if graphics mode, clear if text mode
  4816. ---VBE v2.0 ---
  4817.  5    mode is not VGA-compatible
  4818.  6    bank-switched mode not supported
  4819.  7    linear framebuffer mode supported
  4820.  
  4821. Bitfields for VESA SuperVGA window attributes:
  4822. Bit(s)    Description    (Table 0079)
  4823.  0    exists
  4824.  1    readable
  4825.  2    writable
  4826.  3-7    reserved
  4827.  
  4828. (Table 0080)
  4829. Values for VESA SuperVGA memory model type:
  4830.  00h    text
  4831.  01h    CGA graphics
  4832.  02h    HGC graphics
  4833.  03h    16-color (EGA) graphics
  4834.  04h    packed pixel graphics
  4835.  05h    "sequ 256" (non-chain 4) graphics
  4836.  06h    direct color (HiColor, 24-bit color)
  4837.  07h    YUV (luminance-chrominance, also called YIQ)
  4838.  08h-0Fh reserved for VESA
  4839.  10h-FFh OEM memory models
  4840. --------V-104F02-----------------------------
  4841. INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
  4842.     AX = 4F02h
  4843.     BX = mode (see #0081,#0082)
  4844.         bit 15 set means don't clear video memory
  4845.         bit 14 set means enable linear framebuffer mode (VBE v2.0+)
  4846. Return: AL = 4Fh if function supported
  4847.     AH = status
  4848.         00h successful
  4849.         01h failed
  4850. SeeAlso: AX=4E03h,AX=4F01h,AX=4F03h
  4851.  
  4852. (Table 0081)
  4853. Values for VESA video mode:
  4854.  00h-FFh OEM video modes (see #0009 at AH=00h)
  4855.  100h    640x400x256
  4856.  101h    640x480x256
  4857.  102h    800x600x16
  4858.  103h    800x600x256
  4859.  104h    1024x768x16
  4860.  105h    1024x768x256
  4861.  106h    1280x1024x16
  4862.  107h    1280x1024x256
  4863.  108h    80x60 text
  4864.  109h    132x25 text
  4865.  10Ah    132x43 text
  4866.  10Bh    132x50 text
  4867.  10Ch    132x60 text
  4868. ---VBE v1.2---
  4869.  10Dh    320x200x32K
  4870.  10Eh    320x200x64K
  4871.  10Fh    320x200x16M
  4872.  110h    640x480x32K
  4873.  111h    640x480x64K
  4874.  112h    640x480x16M
  4875.  113h    800x600x32K
  4876.  114h    800x600x64K
  4877.  115h    800x600x16M
  4878.  116h    1024x768x32K
  4879.  117h    1024x768x64K
  4880.  118h    1024x768x16M
  4881.  119h    1280x1024x32K
  4882.  11Ah    1280x1024x64K
  4883.  11Bh    1280x1024x16M
  4884. ---VBE 2.0---
  4885.  120h    1600x1200x256
  4886.  121h    1600x1200x32K
  4887.  122h    1600x1200x64K
  4888. 81FFh    special full-memory access mode
  4889. Note:    the special mode 81FFh preserves the contents of the video memory and
  4890.       gives access to all of the memory; VESA recommends that the special
  4891.       mode be a packed-pixel mode
  4892. SeeAlso: #0009,#0010,#0082,#0123
  4893. Index:    video modes;VESA
  4894.  
  4895. (Table 0082)
  4896. Values for S3 OEM video mode:
  4897.  201h    640x480x256
  4898.  202h    800x600x16
  4899.  203h    800x600x256
  4900.  204h    1024x768x16
  4901.  205h    1024x768x256
  4902.  206h    1280x960x16
  4903.  207h    1152x864x256 (Diamond Stealth 64)
  4904.  208h    1280x1024x16
  4905.  209h    1152x864x32K
  4906.  20Ah    1152x864x64K (Diamond Stealth 64)
  4907.  20Bh    1152x864x4G
  4908.  211h    640x480x64K (Diamond Stealth 24)
  4909.  211h    640x400x4G  (Diamond Stealth64 Video / Stealth64 Graphics)
  4910.  212h    640x480x16M (Diamond Stealth 24)
  4911.  301h    640x480x32K
  4912. Note:    these modes are only available on video cards using S3's VESA driver
  4913. SeeAlso: #0081,#0123,#0656 at INT 1A/AX=B102h
  4914. Index:    video modes;S3
  4915. --------V-104F03-----------------------------
  4916. INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
  4917.     AX = 4F03h
  4918. Return: AL = 4Fh if function supported
  4919.     AH = status
  4920.         00h successful
  4921.         BX = video mode (see #0081,#0082)
  4922.             bit 14: linear frame buffer enabled (VBE v2.0+)
  4923.             bit 15: don't clear video memory
  4924.         01h failed
  4925. SeeAlso: AH=0Fh,AX=4E04h,AX=4F02h
  4926. --------V-104F04-----------------------------
  4927. INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
  4928.     AX = 4F04h
  4929.     DL = subfunction
  4930.         00h get state buffer size
  4931.         Return: BX = number of 64-byte blocks needed
  4932.         01h save video states
  4933.         ES:BX -> buffer
  4934.         02h restore video states
  4935.         ES:BX -> buffer
  4936.     CX = states to save/restore (see #0083)
  4937. Return: AL = 4Fh if function supported
  4938.     AH = status
  4939.         00h successful
  4940.         01h failed
  4941.  
  4942. Bitfields for VESA SuperVGA states to save/restore:
  4943. Bit(s)    Description    (Table 0083)
  4944.  0    video hardware state
  4945.  1    video BIOS data state
  4946.  2    video DAC state
  4947.  3    SuperVGA state
  4948. --------V-104F05-----------------------------
  4949. INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
  4950.     AX = 4F05h
  4951.     BH = subfunction
  4952.         00h select video memory window
  4953.         DX = window address in video memory (in granularity units)
  4954.         01h get video memory window
  4955.         Return: DX = window address in video memory (in gran. units)
  4956.     BL = window number
  4957.         00h window A
  4958.         01h window B
  4959. Return: AL = 4Fh if function supported
  4960.     AH = status
  4961.         00h successful
  4962.         01h failed
  4963. BUG:    Phoenix S3 Trio64V+ v1.02-02 reportedly returns garbage in DX for
  4964.       subfunction 01h
  4965. SeeAlso: AX=4F01h,AX=4F06h,AX=4F07h,AX=7000h/BX=0004h
  4966. --------V-104F06-----------------------------
  4967. INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET LOGICAL SCAN LINE LENGTH (PIXELS)
  4968.     AX = 4F06h
  4969.     BL = subfunction
  4970.         00h set scan line length
  4971.         CX = desired width in pixels
  4972.         01h get scan line length
  4973. Return: AL = 4Fh if function supported
  4974.     AH = status
  4975.         00h successful
  4976.         01h failed
  4977.     BX = bytes per scan line
  4978.     CX = number of pixels per scan line
  4979.     DX = maximum number of scan lines
  4980. Notes:    if the desired width is not achievable, the next larger width will be
  4981.       set
  4982.     the scan line may be wider than the visible area of the screen
  4983.     this function is valid in text modes, provided that pixel values are
  4984.       multiplied by the character cell width/height
  4985. SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h/BL=02h,AX=4F06h/BL=03h,AX=4F07h
  4986. --------V-104F06BL02-------------------------
  4987. INT 10 - VESA SuperVGA BIOS v2.0+ - SET LOGICAL SCAN LINE LENGTH (BYTES)
  4988.     AX = 4F06h
  4989.     BL = 02h
  4990.     CX = desired scanline width in bytes
  4991. Return: AL = 4Fh if function supported
  4992.     AH = status
  4993.         00h successful
  4994.         01h failed
  4995.     BX = bytes per scan line
  4996.     CX = number of pixels per scan line
  4997.     DX = maximum number of scan lines
  4998. Notes:    if the desired width is not achievable, the next larger width will be
  4999.       set
  5000.     the scan line may be wider than the visible area of the screen
  5001.     this function is valid in text modes, provided that pixel values are
  5002.       multiplied by the character cell width/height
  5003. SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h,AX=4F06h/BL=03h,AX=4F07h
  5004. --------V-104F06BL03-------------------------
  5005. INT 10 - VESA SuperVGA BIOS v2.0+ - GET MAXIMUM SCAN LINE LENGTH
  5006.     AX = 4F06h
  5007.     BL = 03h
  5008. Return: AL = 4Fh if function supported
  5009.     AH = status
  5010.         00h successful
  5011.         01h failed
  5012.     BX = maximum bytes per scan line
  5013.     CX = maximum number of pixels per scan line
  5014. Notes:    this function is valid in text modes, provided that pixel values are
  5015.       multiplied by the character cell width/height
  5016. SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h,AX=4F06h/BL=02h,AX=4F07h
  5017. --------V-104F07-----------------------------
  5018. INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET DISPLAY START
  5019.     AX = 4F07h
  5020.     BL = subfunction
  5021.         00h,80h set display start
  5022.         CX = leftmost displayed pixel in scan line
  5023.         DX = first displayed scan line
  5024.         01h get display start
  5025.         Return: BH = 00h
  5026.             CX = leftmost displayed pixel in scan line
  5027.             DX = first displayed scan line
  5028.     BH = 00h (reserved)
  5029. Return: AL = 4Fh if function supported
  5030.     AH = status
  5031.         00h successful
  5032.         01h failed
  5033. Notes:    this function is valid in text modes, provided that values are
  5034.       multiplied by the character cell width/height
  5035.     subfunction 80h waits until vertical retrace before changing the
  5036.       display start address (VBE v2.0+)
  5037. SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h
  5038. --------V-104F08-----------------------------
  5039. INT 10 - VESA SuperVGA BIOS v1.2+ - GET/SET DAC PALETTE CONTROL
  5040.     AX = 4F08h
  5041.     BL = subfunction
  5042.         00h set DAC palette width
  5043.         BH = desired number of bits per primary color
  5044.         01h get DAC palette width
  5045. Return: AL = 4Fh if function supported
  5046.     AH = status
  5047.         00h successful
  5048.         01h failed
  5049.     BH = current number of bits per primary (06h = standard VGA)
  5050. --------V-104F09-----------------------------
  5051. INT 10 - VESA SuperVGA BIOS v2.0+ - GET/SET PALETTE ENTRIES
  5052.     AX = 4F09h
  5053.     BL = subfunction
  5054.         00h set (primary) palette
  5055.         01h get (primary) palette
  5056.         02h set secondary palette data
  5057.         03h get secondary palette data
  5058.         80h set palette during vertical retrace
  5059.     CX = number of entries to change
  5060.     DX = starting palette index
  5061.     ES:DI -> palette buffer (see #0084)
  5062. Return: AL = 4Fh if function supported
  5063.     AH = status
  5064.         00h successful
  5065.         01h failed
  5066. SeeAlso: AX=4F0Ah,AX=D000h"S3VBE"
  5067.  
  5068. Format of VESA VBE palette entry:
  5069. Offset    Size    Description    (Table 0084)
  5070.  00h    BYTE    red
  5071.  01h    BYTE    green
  5072.  02h    BYTE    blue
  5073.  03h    BYTE    alpha or alignment byte
  5074. --------V-104F0ABL00-------------------------
  5075. INT 10 - VESA SuperVGA BIOS v2.0+ - GET PROTECTED-MODE INTERFACE
  5076.     AX = 4F0Ah
  5077.     BL = 00h
  5078. Return: AL = 4Fh if function supported
  5079.     AH = status
  5080.         00h successful
  5081.         ES:DI -> protected-mode table (see #0085)
  5082.         CX = length of table in bytes, included protected-mode code
  5083.         01h failed
  5084. SeeAlso: AX=4F00h,AX=4F05h,AX=4F07h,AX=4F09h
  5085.  
  5086. Format of VESA VBE 2.0 protected-mode table:
  5087. Offset    Size    Description    (Table 0085)
  5088.  00h    WORD    offset (within table) of protected-mode code for Function 5
  5089.           (Set Window)
  5090.  02h    WORD    offset of protected-mode code for Function 7 (Set Disp Start)
  5091.  04h    WORD    offset of protected-mode code for Function 9 (Set Primary
  5092.           Palette)
  5093.  06h    WORD    offset (within table) of list of I/O ports and memory locations
  5094.           for which I/O privilege may be required in protected mode
  5095.           (0000h if no list)
  5096.  08h    var    code and optional port/memory list
  5097. --------V-104F0A-----------------------------
  5098. INT 10 - VESA SuperVGA BIOS v2.0 beta - GET PROTECTED-MODE CODE
  5099.     AX = 4F0Ah
  5100.     BX = function to be copied (see #0086)
  5101. Return: AL = 4Fh if function supported
  5102.     AH = status
  5103.         00h successful
  5104.         CX = number of bytes to copy
  5105.         ES:DI -> code for requested function
  5106.         01h failed
  5107. SeeAlso: AX=4F09h,AX=D000h"S3VBE"
  5108.  
  5109. (Table 0086)
  5110. Values for VESA VBE protected-mode function identifiers:
  5111.  0001h    set bank (see AX=4F05h)
  5112.  0002h    set display start (see AX=4F07h)
  5113.  0003h    set palette (see AX=4F09h)
  5114. --------V-104F0B-----------------------------
  5115. INT 10 - VESA SuperVGA BIOS - RESERVED FOR FUTURE SVGA FUNCTIONS
  5116.     AX = 4F0Bh-4F0Fh
  5117. SeeAlso: AX=4F00h
  5118. --------p-104F10BL00-------------------------
  5119. INT 10 - VESA VBE/PM (Power Management) v1.0+ - GET CAPABILITIES
  5120.     AX = 4F10h
  5121.     BL = 00h
  5122.     ES:DI = 0000h:0000h (reserved for future use as pointer to info block)
  5123. Return: AL = 4Fh if function supported (installed)
  5124.     AH = call status
  5125.         00h successful
  5126.         else failed
  5127.     ---if successful---
  5128.     BL = VBE/PM version (bits 7-4: major, bits 3-0: minor)
  5129.     BH = supported states (see #0087)
  5130.     ES:DI unchanged
  5131. Index:    installation check;VESA VBE/Power Management|VESA DPMS
  5132. SeeAlso: AX=4F10h/BL=01h,AX=4F10h/BL=02h
  5133.  
  5134. Bitfields for VESA VBE/PM supported power states:
  5135. Bit(s)    Description    (Table 0087)
  5136.  0    standby
  5137.  1    suspend
  5138.  2    off
  5139.  3    reduced on
  5140. --------p-104F10BL01-------------------------
  5141. INT 10 - VESA VBE/PM (Power Management) v1.0+ - SET DISPLAY POWER STATE
  5142.     AX = 4F10h
  5143.     BL = 01h
  5144.     BH = new state (see #0088)
  5145. Return: AL = 4Fh if function supported
  5146.     AH = call status
  5147.         00h successful
  5148.         else failed
  5149. SeeAlso: AX=4F10h/BL=00h,AX=4F10h/BL=02h,AX=A00Ch
  5150.  
  5151. (Table 0088)
  5152. Values for VESA VBE/PM power state:
  5153.  00h    On
  5154.  01h    standby
  5155.  02h    suspend
  5156.  04h    Off
  5157.  08h    reduced On (for flat screens)
  5158. --------p-104F10BL02-------------------------
  5159. INT 10 - VESA VBE/PM (Power Management) v1.0+ - GET DISPLAY POWER STATE
  5160.     AX = 4F10h
  5161.     BL = 02h
  5162. Return: AL = 4Fh if function supported
  5163.     AH = call status
  5164.         00h successful
  5165.            BH = current power state (see #0088)
  5166.         else failed
  5167. SeeAlso: AX=4F10h/BL=00h,AX=4F10h/BL=01h,AX=A00Dh
  5168. --------V-104F11-----------------------------
  5169. INT 10 - VESA VBE/FP (Flat Panel Interface) - API
  5170.     AX = 4F11h
  5171.     BL = function
  5172.         00h installation check / get capabilities
  5173.     other registers vary by function
  5174. Return: varies by function
  5175. --------V-104F12-----------------------------
  5176. INT 10 - VESA VBE/CI (Cursor Interface) - API
  5177.     AX = 4F12h
  5178.     BL = function
  5179.     other registers vary by function
  5180. Return: varies by function
  5181. SeeAlso: AX=4F4Dh
  5182. --------s-104F13BX0000-----------------------
  5183. INT 10 - VESA VBE/AI (Audio Interface) - INSTALLATION CHECK
  5184.     AX = 4F13h
  5185.     BX = 0000h
  5186. Return: AL = 4Fh if function supported
  5187.         AH = status
  5188.         00h successful
  5189.             BX = version (0010h for 1.00 -- note nonstandard value!)
  5190.         01h failed
  5191. SeeAlso: AX=4F13h/BX=0001h,AX=4F13h/BX=0005h
  5192. --------s-104F13BX0001-----------------------
  5193. INT 10 - VESA VBE/AI (Audio Interface) - LOCATE DEVICE
  5194.     AX = 4F13h
  5195.     BX = 0001h
  5196.     CX = 0000h ???
  5197.     DX = type of device
  5198.         0001h Wave device
  5199.         0002h MIDI device
  5200.         0003h Volume device
  5201. Return: AL = 4Fh if function supported
  5202.     AH = status
  5203.         00h successful
  5204.         CX = handle [returned 1 for DX=1 and 3, and 2 for DX=2]
  5205.         01h failed
  5206. SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0002h
  5207. --------s-104F13BX0002-----------------------
  5208. INT 10 - VESA VBE/AI (Audio Interface) - QUERY DEVICE
  5209.     AX = 4F13h
  5210.     BX = 0002h
  5211.     CX = handle
  5212.     DX = query
  5213.         0001h return length of GeneralDeviceClass
  5214.         0002h return copy    of GeneralDeviceClass (see #0089)
  5215.         0003h return length of Volume Info Structure
  5216.         0004h return copy    of Volume Info Structure (see #0099)
  5217.         0005h return length of Volume Services Structure
  5218.         0006h return copy    of Volume Services Structure (see #0101)
  5219.         0007h-000Fh reserved
  5220.         0010h-FFFFh device-specific
  5221.     SI:DI -> buffer (functions 0002h,0004h,0006h)
  5222. Return: AL = 4Fh if function supported
  5223.     AH = status
  5224.         00h successful
  5225.         SI:DI = length (functions 1,3,5)
  5226.         SI:DI buffer filled (functions 2,4,6)
  5227.         01h failed
  5228. Note:    functions 0003h to 0006h are only supported for the Volume device
  5229.  
  5230. Format of GeneralDeviceClass structure:
  5231. Offset    Size    Description    (Table 0089)
  5232.  00h    4 BYTEs    name of the structure ("GENI")
  5233.  04h    DWORD    structure length
  5234.  08h    WORD    type of device (1=Wave, 2=MIDI)
  5235.  0Ah    WORD    version of VESA driver support (0100h for 1.00)
  5236.  10h    var    for CX=handle for Wave device:
  5237.             Wave Info structure (see #0090)
  5238.             some bytes ???
  5239.         for CX=handle for MIDI device:
  5240.             MIDI Info Structure (see #0095)
  5241.             first 8 bytes of MIDI Service Structure ???
  5242. SeeAlso: #0099,#0101
  5243.  
  5244. Format of WAVE Info Structure:
  5245. Offset    Size    Description    (Table 0090)
  5246.  00h    4 BYTEs    name of the structure ("WAVI")
  5247.  04h    DWORD    structure length [0000007Eh]
  5248.  08h    DWORD    driver software version [00000003h]
  5249.  0Ch 32 BYTEs    vendor name, etc. (ASCIZ string)
  5250.  2Ch 32 BYTEs    vendor product name
  5251.  4Ch 32 BYTEs    vendor chip/hardware description
  5252.  6Ch    BYTE    installed board number
  5253.  6Dh    3 BYTEs    unused data
  5254.  70h    DWORD    feature bits (see #0091)
  5255.  74h    WORD    user determined preference field
  5256.  76h    WORD    memory required for driver use [0200h]
  5257.  78h    WORD    number of timer tick callbacks per second [0000h]
  5258.  7Ah    WORD    channels: 1 = mono, 2 = stereo
  5259.         stereo is assumed to be interleaved data
  5260.  7Ch    WORD    bitfield of max sample sizes (see #0092)
  5261. SeeAlso: #0095
  5262.  
  5263. Bitfields for Wave feature bits:
  5264. Bit(s)    Description    (Table 0091)
  5265.  0    8000hz Mono Playback
  5266.  1    8000hz Mono Record
  5267.  2    8000hz Stereo Record
  5268.  3    8000hz Stereo Playback
  5269.  4    8000hz Full Duplex Play/Record
  5270.  5    11025hz Mono Playback
  5271.  6    11025hz Mono Record
  5272.  7    11025hz Stereo Record
  5273.  8    11025hz Stereo Playback
  5274.  9    11025hz Full Duplex Play/Record
  5275.  10    22050hz Mono Playback
  5276.  11    22050hz Mono Record
  5277.  12    22050hz Stereo Record
  5278.  13    22050hz Stereo Playback
  5279.  14    22050hz Full Duplex Play/Record
  5280.  15    44100hz Mono Playback
  5281.  16    44100hz Mono Record
  5282.  17    44100hz Stereo Record
  5283.  18    44100hz Stereo Playback
  5284.  19    44100hz Full Duplex Play/Record
  5285.  20-26    reserved (0)
  5286.  27    driver must pre-handle the data
  5287.  28    Variable Sample mono   playback
  5288.  29    Variable Sample stereo playback
  5289.  30    Variable Sample mono   record
  5290.  31    Variable Sample stereo record
  5291.  
  5292. (Table 0092)
  5293. Values for Sample data size:
  5294.  01h    8bit play
  5295.  02h    16bit play
  5296.  10h    8bit record
  5297.  20h    16bit record
  5298.  
  5299. Format of WAVE Audio Services structure:
  5300. Offset    Size    Description    (Table 0093)
  5301.  00h    4 BYTEs    name of the structure
  5302.  04h    DWORD    structure length
  5303.  08h 16 BYTEs    for future expansion
  5304. ---entry points (details???)---
  5305.  18h    DWORD    DeviceCheck
  5306.         11h compression (see also #0094)
  5307.         12h driver state
  5308.         13h get current pos
  5309.         14h sample rate
  5310.         15h set preference
  5311.         16h get DMA,IRQ
  5312.         17h get IO address
  5313.         18h get mem address
  5314.         19h get mem free
  5315.         1Ah full duplex
  5316.         1Bh get block size
  5317.         1Ch get PCM format
  5318.         1Dh enable PCM format
  5319.         80h-.. vendors can add DevChks above 0x80
  5320.  1Ch    DWORD    PCMInfo
  5321.  20h    DWORD    PlayBlock
  5322.  24h    DWORD    PlayCont
  5323.  28h    DWORD    RecordBlock
  5324.  2Ch    DWORD    RecordCont
  5325.  30h    DWORD    PauseIO
  5326.  34h    DWORD    ResumeIO
  5327.  38h    DWORD    StopIO
  5328.  3Ch    DWORD    WavePrepare
  5329.  40h    DWORD    WaveRegister
  5330.  44h    DWORD    GetLastError
  5331.         01h unsupported feature/function
  5332.         02h bad sample rate
  5333.         03h bad block length
  5334.         04h bad block address
  5335.         05h app. missed an IRQ
  5336.         06h don't understand the PCM size/format
  5337.         80h-.. vendors specific errors
  5338.  48h    DWORD    TimerTick
  5339.  4Ch    DWORD    ApplPSyncCB: CallBack: play filled in by the app
  5340.  50h    DWORD    ApplRSyncCB: CallBack: rec filled in by the app
  5341. SeeAlso: #0097,#0101
  5342.  
  5343. (Table 0094)
  5344. Values for type of compression:
  5345.  01h    IMA play
  5346.  02h    ALAW play
  5347.  03h    ULAW play
  5348.  11h    IMA record
  5349.  12h    ALAW record
  5350.  13h    ULAW record
  5351.  
  5352. Format of MIDI Info Structure:
  5353. Offset    Size    Description    (Table 0095)
  5354.  00h    4 BYTEs    name of the structure ("MIDI")
  5355.  04h    DWORD    structure length
  5356.  08h    DWORD    driver software version [00000003h]
  5357.  0Ch 32 BYTEs    vendor name, etc. (ASCIZ string)
  5358.  2Ch 32 BYTEs    vendor product name
  5359.  4Ch 32 BYTEs    vendor chip/hardware description
  5360.  6Ch    BYTE    installed board number
  5361.  6Dh    3 BYTEs    unused data
  5362.  70h 14 BYTEs    the patch library file name [OPL2.BNK 00..]
  5363.  7Eh    DWORD    feature bits (see #0096)
  5364.  80h    WORD    user determined preference field
  5365.  82h    WORD    memory required for driver use
  5366.  84h    WORD    # of timer tick callbacks per second
  5367.  86h    WORD    max # of tones (voices, partials)
  5368. SeeAlso: #0089,#0097,#0099
  5369.  
  5370. Bitfields for MIDI feature bits:
  5371. Bit(s)    Description    (Table 0096)
  5372.  0-3    reserved for GM extensions
  5373.  4    Transmitter/Receiver only
  5374.  5    Patches preloaded
  5375.  6    MIDI receive has time stamp
  5376.  8    MIDI interrupt driven input supported
  5377.  9    MIDI polled input supported
  5378.  10    MIDI remote patches supported
  5379.  
  5380. Format of MIDI Service structure:
  5381. Offset    Size    Description    (Table 0097)
  5382.  00h    4 BYTEs    name of the structure ("MIDS")
  5383.  04h    DWORD    structure length
  5384.  08h 16 WORDs    patches loaded table bit field
  5385.  28h 16 BYTEs    for future expansion
  5386. ---entry points (details???)---
  5387.  38h    DWORD    device check
  5388.         11h return available tones
  5389.         12h return TRUE/FALSE if patch is understood
  5390.         13h set preference
  5391.         14h allow/disallow voice stealing
  5392.         15h get FIFO sizes
  5393.         16h get DMA,IRQ
  5394.         17h get IO address
  5395.         18h get mem address
  5396.         19h get mem free
  5397.         80h-.. vendors can add DevChks above 0x80
  5398.  3Ch    DWORD    global reset
  5399.  40h    DWORD    MIDI msg
  5400.  44h    DWORD    poll MIDI
  5401.  48h    DWORD    preload patch
  5402.  4Ch    DWORD    unload patch
  5403.  50h    DWORD    timer tick
  5404.  54h    DWORD    get last error
  5405.         01h unsupported feature/function
  5406.         02h unknown patch type (see #0098)
  5407.         03h all tones are used
  5408.         04h messages are out of sync
  5409.         05h an incoming patch was incomplete
  5410.         06h an incoming patch couldn't be stored
  5411.         07h had to drop an incoming byte
  5412.         08h driver is failing a patch download
  5413.         80h-.. vendors specific errors
  5414.  58h    DWORD    Patch Block free callback
  5415.  5Ch    DWORD    MIDI byte avail. callback
  5416. SeeAlso: #0093,#0101
  5417.  
  5418. (Table 0098)
  5419. Values for MIDI Registered Patch Types:
  5420.  10h    OPL2
  5421.  11h    OPL3
  5422.  
  5423. Format of Volume Info Structure:
  5424. Offset    Size    Description    (Table 0099)
  5425.  00h  4    BYTEs    name of the structure ("VOLI")
  5426.  04h    DWORD    structure length (00000092h)
  5427.  08h    DWORD    driver software version [00000001h]
  5428.  0Ch 32 BYTEs    vendor name, etc. (ASCIZ string)
  5429.  2Ch 32 BYTEs    vendor product name
  5430.  4Ch 32 BYTEs    vendor chip/hardware description
  5431.  6Ch    BYTE    installed board number (0 for 1st/only board)
  5432.  6Dh  3    BYTEs    unused data (0)
  5433.  70h 24 BYTEs    text name of the mixer channel
  5434.  88h    DWORD    features bits (see #0100)
  5435.  8Ch    WORD    minimum volume setting
  5436.  8Eh    WORD    maximum volume setting
  5437.  90h    WORD    attenuation/gain crossover
  5438. SeeAlso: #0089,#0101
  5439.  
  5440. Bitfields for Volume feature bits:
  5441. Bit(s)    Description    (Table 0100)
  5442.  0    Stereo Volume control available
  5443.  2    Low Pass Filter is available
  5444.  3    High Pass Filter is available
  5445.  4    Parametric Tone Control is available
  5446.  5    selectable output paths
  5447.  8    Azimuth Field positioning supported
  5448.  9    Phi Field positioning supported
  5449.  10-30    unused???
  5450.  31    Master Volume device
  5451.  
  5452. Format of Volume Services Structure:
  5453. Offset    Size    Description    (Table 0101)
  5454.  00h    4 BYTEs    name of the structure ("VOLS")
  5455.  04h    DWORD    structure length (00000038h)
  5456.  08h 16 BYTEs    16 bytes for future expansion (0)
  5457. ---entry points (details???)---
  5458.  18h    DWORD    device check
  5459.         0011h filter range
  5460.         0012h filter setting
  5461.         0013h filter current
  5462.         0014h tone range
  5463.         0015h tone setting
  5464.         0016h tone current
  5465.         0017h path
  5466.         0018h get IO address
  5467.         0080h-.. vendors can add DevChks above 0x80
  5468.  1Ch    DWORD    set vol to an absolute setting
  5469.         01h User master volume setting
  5470.         02h application master volume setting
  5471.  20h    DWORD    set 3D volume
  5472.  24h    DWORD    tone control
  5473.  28h    DWORD    filter control
  5474.  2Ch    DWORD    output path
  5475.  30h    DWORD    reset channel
  5476.  34h    DWORD    get last error
  5477.         01h unsupported feature/function
  5478.         02h out of range parameter value
  5479.         80h+ vendor-specific errors
  5480. SeeAlso: #0093,#0097
  5481. --------s-104F13BX0003-----------------------
  5482. INT 10 - VESA VBE/AI (Audio Interface) - OPEN DEVICE
  5483.     AX = 4F13h
  5484.     BX = 0003h
  5485.     CX = handle
  5486.     DX = API set (16/32-bit)
  5487.     SI = segment ???
  5488. Return: AL = 4Fh if function supported
  5489.     AH = status
  5490.         00h successful
  5491.         SI:CX -> memory ???
  5492.         01h failed
  5493. SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0002h,AX=4F13h/BX=0004h
  5494. --------s-104F13BX0004-----------------------
  5495. INT 10 - VESA VBE/AI (Audio Interface) - CLOSE DEVICE
  5496.     AX = 4F13h
  5497.     BX = 0004h
  5498.     CX = handle
  5499. Return: AL = 4Fh if function supported
  5500.     AH = status
  5501.         00h successful
  5502.         01h failed
  5503. SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0003h,AX=4F13h/BX=0005h
  5504. --------s-104F13BX0005-----------------------
  5505. INT 10 - VESA VBE/AI (Audio Interface) - UNINSTALL DRIVER
  5506.     AX = 4F13h
  5507.     BX = 0005h
  5508. Return: AL = 4Fh if function supported
  5509.     AH = status
  5510.         00h successful
  5511.         01h failed
  5512. SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0006h
  5513. --------s-104F13BX0006-----------------------
  5514. INT 10 - VESA VBE/AI (Audio Interface) - DRIVER CHAIN/UNCHAIN
  5515.     AX = 4F13h
  5516.     BX = 0006h
  5517. Return: AL = 4Fh if function supported
  5518.     AH = status
  5519.         00h successful
  5520.         01h failed
  5521. SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0005h
  5522. ----------104F14-----------------------------
  5523. INT 10 - VESA OEM Extensions - API
  5524.     AX = 4F14h
  5525.     BL = function
  5526.         00h installation check / get capabilities
  5527.     other registers vary by function
  5528. Return: varies by function
  5529. Note:    this function is provided for OEMs to implement system-specific
  5530.       functionality in a VESA-compatible manner
  5531. ----------104F14-----------------------------
  5532. INT 10 - VESA OEM Extensions - Matrox Millenium (BIOS v2.1)
  5533.     AX = 4F14h
  5534.     BL = function
  5535.         00h installation check / get capabilities
  5536.         ES:DI -> 256-byte buffer for Matrox-specific information
  5537.             (see #0102)
  5538.         Return: ES:DI buffer filled
  5539.         01h ???
  5540.         BH = ???
  5541.         02h ???
  5542.         BH = ??? (bit flags?)
  5543.         03h ???
  5544.         SI = index of ???
  5545.         Return: CL = value of ???
  5546.         04h ???
  5547.         DX = ???
  5548.         Return: CL,EDX destroyed
  5549.         else
  5550.         Return: AX = FFFFh
  5551. Return: AL = 4Fh if function supported
  5552.         AH = status
  5553.         00h successful
  5554.         01h failed
  5555. Note:    this function is provided for OEMs to implement system-specific
  5556.       functionality in a VESA-compatible manner
  5557.  
  5558. Format of Matrox-specific VESA extensions information:
  5559. Offset    Size    Description    (Table 0102)
  5560.  00h  7 BYTEs    signature "VBE/MGA"
  5561.  07h 12 BYTEs    ??? (01h 01h 00h 00h 00h 00h 00h 00h 00h 07h 01h 02h)
  5562.  13h    DWORD    ->
  5563.  17h    DWORD    ->
  5564.  1Bh    DWORD    ->
  5565.  1Fh    DWORD    ->
  5566.  23h    DWORD    ->
  5567.  27h    DWORD    ->
  5568.  2Bh    WORD    ???
  5569.  2Dh    DWORD    ???
  5570.  31h    DWORD    ???
  5571.  35h    WORD    ???
  5572.  37h 201 BYTEs    unused??? (cleared to 00h)
  5573. --------V-104F15BL00-------------------------
  5574. INT 10 - VESA VBE/DC (Display Data Channel) - INSTALLATION CHECK / CAPABILITIES
  5575.     AX = 4F15h
  5576.     BL = 00h
  5577.     ???
  5578. Return: AL = 4Fh if function supported
  5579.         AH = status
  5580.         00h successful
  5581.             ???
  5582.         01h failed
  5583.             ???
  5584. SeeAlso: AX=4F15h/BL=01h,AX=4F15h/BL=02h
  5585. --------V-104F15BL01-------------------------
  5586. INT 10 - VESA VBE/DC (Display Data Channel) - READ EDID
  5587.     AX = 4F15h
  5588.     BL = 01h
  5589.     CX = 0000h
  5590.     DX = 0000h
  5591.     ES:DI -> 128-byte buffer for EDID record (see #0103)
  5592. Return: AL = 4Fh if function supported
  5593.         AH = status
  5594.         00h successful
  5595.             ES:DI buffer filled
  5596.         01h failed
  5597. SeeAlso: AX=4F15h/BL=00h,AX=4F15h/BL=02h
  5598.  
  5599. Format of VESA EDID record:
  5600. Offset    Size    Description    (Table 0103)
  5601.  00h  8 BYTEs    padding (all FFh, or 00h FFh..FFh 00h)
  5602.  08h    WORD    manufacturer ID (see #0109)
  5603.         bits 6-2: first letter (0=A, 1=B, etc.)
  5604.         bits 11-7: second letter
  5605.         bits 15-12: third letter
  5606.  0Ah    WORD    EDID ID code -- identifies monitor model
  5607.  0Ch    DWORD    serial number or FFFFFFFFh
  5608.  10h    BYTE    week number of manufacture
  5609.  11h    BYTE    manufacture year - 1990
  5610.  12h    BYTE    EDID version
  5611.  13h    BYTE    EDID revision
  5612.  14h    BYTE    video input type (see #0105)
  5613.  15h    BYTE    maximum horizontal size in cm
  5614.  16h    BYTE    maximum vertical size in cm
  5615.  17h    BYTE    gamma factor (gamma = 1.0 + factor/100, so max = 3.55)
  5616.  18h    BYTE    DPMS flags (see #0104)
  5617.  19h    BYTE    chroma information: green X'/Y' and red X'/Y'
  5618.  1Ah    BYTE    chroma information: white X'/Y' and blue X'/Y'
  5619.  1Bh    BYTE    chroma information: red Y
  5620.  1Ch    BYTE    chroma information: red X
  5621.  1Dh    BYTE    chroma information: green Y
  5622.  1Eh    BYTE    chroma information: green X
  5623.  1Fh    BYTE    chroma information: blue Y
  5624.  20h    BYTE    chroma information: blue X
  5625.  21h    BYTE    chroma information: white Y
  5626.  22h    BYTE    chroma information: white X
  5627.  23h    BYTE    established timings 1 (see #0106)
  5628.  24h    BYTE    established timings 2 (see #0107)
  5629.  25h    BYTE    manufacturer's reserved timing or 00h for none
  5630.  26h  8 WORDs    standard timing identification
  5631.         resolution (low byte) and vertical frequency (high byte) for
  5632.           each of eight modes (see #0108)
  5633.         X resolution = (lowbyte + 31) * 8
  5634.  36h 72 BYTEs    detail timing description
  5635.  7Eh    WORD    checksum
  5636.  
  5637. Bitfields for DPMS EDID flags:
  5638. Bit(s)    Description    (Table 0104)
  5639.  2-0    ???
  5640.  3    display type
  5641.     =0 non-RGB multicolor
  5642.     =1 RGB color
  5643.  4    ???
  5644.  5    Active Off supported
  5645.  6    Suspend supported
  5646.  7    Standby supported
  5647. SeeAlso: #0103
  5648.  
  5649. Bitfields for DPMS input signal type:
  5650. Bit(s)    Description    (Table 0105)
  5651.  0    separate sync
  5652.  1    composite sync
  5653.  2    sync on green
  5654.  4-3    ???
  5655.  6-5    voltage level
  5656.     00 0.700V/0.300V (1.00 Vp-p)
  5657.     01 0.714V/0.286V
  5658.     10 0.100V/0.400V
  5659.     11 reserved
  5660.  7    =1 digital signal, =0 analog
  5661. SeeAlso: #0103
  5662.  
  5663. Bitfields for DPMS established timings 1:
  5664. Bit(s)    Description    (Table 0106)
  5665.  0    720x400 @ 70 Hz (VGA 640x400, IBM)
  5666.  1    720x400 @ 88 Hz (XGA2)
  5667.  2    640x480 @ 60 Hz (VGA)
  5668.  3    640x480 @ 67 Hz (Mac II, Apple) 
  5669.  4    640x480 @ 72 Hz (VESA)
  5670.  5    640x480 @ 75 Hz (VESA)
  5671.  6    800x600 @ 56 Hz (VESA)
  5672.  7    800x600 @ 60 Hz (VESA)
  5673. SeeAlso: #0103,#0107
  5674.  
  5675. Bitfields for DPMS established timings 2:
  5676. Bit(s)    Description    (Table 0107)
  5677.  0    800x600 @ 72 Hz (VESA)
  5678.  1    800x600 @ 75 Hz (VESA)
  5679.  2    832x624 @ 75 Hz (Mac II)
  5680.  3    1024x768 @ 87 Hz interlaced (8514A) 
  5681.  4    1024x768 @ 60 Hz (VESA)
  5682.  5    1024x768 @ 70 Hz (VESA)
  5683.  6    1024x768 @ 75 Hz (VESA)
  5684.  7    1280x1024 @ 75 Hz (VESA)
  5685. SeeAlso: #0103,#0106
  5686.  
  5687. Bitfields for DPMS standard timing information:
  5688. Bit(s)    Description    (Table 0108)
  5689.  5-0    vertical refresh frequency - 60 (Hz)
  5690.  7-6    aspect ratio (Y resolution = X resolution * aspect ratio)
  5691.     00 ???
  5692.     01 0.75
  5693.     10 0.8
  5694.     11 0.5625 
  5695. SeeAlso: #0103
  5696.  
  5697. (Table 0109)
  5698. Values for manufacturer ID:
  5699.  "AST"    AST Research (see #0110)
  5700.  "HWP"    Hewlett-Packard
  5701. !!!
  5702.  "IVM"    Idek Iiayama North America, Inc.
  5703.  "MIR"    miro Computer Products AG
  5704.  "OQI"    Optiquest
  5705.  "CSC"    ViewSonic Corporation
  5706. SeeAlso: #0103
  5707.  
  5708. (Table 0110)
  5709. Values for AST monitor EDID:
  5710.  8001h    ASTVision 4V
  5711.  8002h    ASTVision 4I
  5712.  8003h    ASTVision 4N
  5713.  8004h    ASTVision 4L
  5714.  8005h    ASTVision 5L
  5715.  8006h    ASTVision 7L
  5716.  8007h    ASTVision 7H
  5717.  8008h    ASTVision 20H
  5718.  8009h    AST Sabre
  5719.  800Ah    ASTVision 5V
  5720. SeeAlso: #0109,#0103
  5721. --------V-104F15BL02-------------------------
  5722. INT 10 - VESA VBE/DC (Display Data Channel) - READ VDIF
  5723.     AX = 4F15h
  5724.     BL = 02h
  5725.     ???
  5726. Return: AL = 4Fh if function supported
  5727.         AH = status
  5728.         00h successful
  5729.             ???
  5730.         01h failed
  5731. SeeAlso: AX=4F15h/BL=00h,AX=4F15h/BL=01h
  5732. --------V-104F16-----------------------------
  5733. INT 10 - VESA VBE/GC (Graphics System Configuration) - API
  5734.     AX = 4F16h
  5735.     BL = function
  5736.         00h installation check / get capabilities
  5737.     other registers vary by function
  5738. Return: varies by function
  5739. --------V-104F17-----------------------------
  5740. INT 10 - VESA VBE/AF (Accelerator Functions) - API
  5741.     AX = 4F17h
  5742.     BL = function
  5743.         00h installation check / get capabilities
  5744.     other registers vary by function
  5745. Return: varies by function
  5746. --------V-104F4D-----------------------------
  5747. INT 10 - VESA - VIDEO CURSOR INTERFACE REQUEST
  5748.     AX = 4F4Dh
  5749.     BX = number of bytes available for VCI use
  5750.     DS:0000h -> buffer for VCI
  5751.     ES:DI -> VCI driver callback function
  5752. Return: AL = 4Fh if supported
  5753.         AH = status
  5754.         00h successful
  5755.             BX = number of bytes used by VCI
  5756.             ES:DI -> VCI request handler
  5757.         01h failed
  5758. Desc:    allow the VESA BIOS Extensions to cooperate with a pointing-device
  5759.       (typically mouse) driver
  5760. SeeAlso: AX=4F12h
  5761. --------V-104F70-----------------------------
  5762. INT 10 - Avance Logic - GET ADAPTER INFORMATION
  5763.     AX = 4F70h
  5764. Return:    AX = 004Fh if successful
  5765.         BL = board information (see #0111)
  5766.         BH = board type???
  5767.         00h on ALG2101
  5768.         FFh otherwise
  5769. SeeAlso: AX=4F00h
  5770.  
  5771. Bitfields for Avance Logic board information:
  5772. Bit(s)    Description    (Table 0111)
  5773.  0-1    video RAM size
  5774.     00 256K
  5775.     01 512K
  5776.     10 1M
  5777.     11 2M
  5778.  2    ???
  5779.  3    slot size???
  5780.     =0 8-bit slot
  5781.     =1 16-bit slot
  5782.  4    unused
  5783.  5    set on ALG2228/AL2301
  5784.  6-7    unused
  5785. --------V-104FDD-----------------------------
  5786. INT 10 - ATI M64VBE.COM - GET RESIDENT SEGMENT
  5787.     AX = 4FDDh
  5788. Return: AX = CS of resident code
  5789. Program: M64VBE is a VESA VBE 2.0 driver TSR for ATI's Mach64 video chip
  5790. SeeAlso: AX=4FFFh/BX=364Dh"M64VBE",INT 60"M64VBE"
  5791. --------V-104FFF-----------------------------
  5792. INT 10 - VESA SuperVGA BIOS - Everex - TURN VESA ON/OFF
  5793.     AX = 4FFFh
  5794.     DL = new state (00h off, 01h on)
  5795. Return: AX = 0000h if successful
  5796. --------V-104FFF-----------------------------
  5797. INT 10 - Diamond Stealth 24 - SET/RESET DUAL DISPLAY MODE
  5798.     AX = 4FFFh
  5799.     BX = dual display mode
  5800.         00h reset
  5801.         01h set dual display, 32KB VGA test
  5802.         02h set dual display, 64KB VGA test
  5803. Return: AX = 4F00h if successful
  5804.         BX = number of scanlines off screen for test mode
  5805. --------V-104FFFBX364D-----------------------
  5806. INT 10 - ATI M64VBE.COM - UNINSTALL
  5807.     AX = 4FFFh
  5808.     BX = 364Dh ('6M')
  5809.     CX = 5634h ('V4')
  5810. Return: AX,DX,DS,ES destroyed
  5811. Program: M64VBE is a VESA VBE 2.0 driver TSR for ATI's Mach64 video chip
  5812. SeeAlso: AX=4FDDh"M64VBE",INT 60"M64VBE"
  5813. --------U-1050-------------------------------
  5814. INT 10 - SCROLOCK.COM - INSTALLATION CHECK
  5815.     AH = 50h
  5816. Return: BX = 1954h if installed
  5817.         AL = 00h if inactive, nonzero if active
  5818. Program: SCROLOCK is a utility supplied with System Enhancement Associates'
  5819.       ARC archiver
  5820. SeeAlso: AH=51h
  5821. --------J-105000-----------------------------
  5822. INT 10 - VIDEO - AX PC - SET SCREEN COUNTRY CODE
  5823.     AX = 5000h
  5824.     BX = country code
  5825.         0001h USA (English), 0051h Japan
  5826. Return: AL = status
  5827.         00h successful
  5828.         01h bad country code
  5829.         02h other error
  5830. SeeAlso: AX=5001h,INT 16/AX=5000h
  5831. --------J-105001-----------------------------
  5832. INT 10 - VIDEO - AX PC - GET SCREEN COUNTRY CODE
  5833.     AX = 5001h
  5834. Return: AL = status
  5835.         00h successful
  5836.         BX = country code
  5837.         02h error
  5838. SeeAlso: AH=00h,AX=5000h,INT 16/AX=5001h,INT 21/AH=38h
  5839. --------V-105049-----------------------------
  5840. INT 10 - VIDEO - SCREENR v1.55+ - API
  5841.     AX = 5049h ('PI')
  5842.     BX = function
  5843.         0000h installation check
  5844.         0001h lock mode
  5845.         0002h unlock mode
  5846.         0003h lock palette
  5847.         0004h unlock palette
  5848. Return: AX = 0000h if installed
  5849.         BX = TSR version (BH=major,BL=minor)
  5850.         CL = mode locking status
  5851.         00h mode not locked
  5852.         01h mode locked: INT 10/AH=00h disabled
  5853.         CH = palette locking status
  5854.         00h palette not locked
  5855.         01h palette locked, the following functions are disabled:
  5856.             AX=1000h, AX=1001h, AX=1002h, AX=1010h, AX=1012h
  5857. Program: SCREENR is a TSR supplied with Patrick Ibbetson's SCREEN display
  5858.       utility.
  5859. Index:    installation check;SCREENR
  5860. --------U-1051-------------------------------
  5861. INT 10 - SCROLOCK.COM - ENABLE/DISABLE
  5862.     AH = 51h
  5863.     AL = state
  5864.         00h disable
  5865.         nonzero enable
  5866. Return: nothing
  5867. Program: SCROLOCK is a utility supplied with System Enhancement Associates'
  5868.       ARC file archiver
  5869. SeeAlso: AH=50h"SCROLOCK"
  5870. --------J-105100-----------------------------
  5871. INT 10 - VIDEO - AX PC - REGISTER EXTERNAL CHARACTER
  5872.     AX = 5100h
  5873.     BH = character width in bits (10h)
  5874.     BL = character height (10h)
  5875.     DX = character code (DH = F0h-F3h, DL=40h-7Eh,80h-FCh)
  5876.     ES:BP -> character bitmap
  5877. Return: AL = status (00h successful, 01h failed)
  5878. SeeAlso: AX=5101h,INT 1F"SYSTEM DATA"
  5879. --------J-105101-----------------------------
  5880. INT 10 - VIDEO - AX PC - READ CHARACTER
  5881.     AX = 5101h
  5882.     BH = character width in bits
  5883.     BL = character height
  5884.     DX = character code (DH = 00h if 8-bit character)
  5885.     ES:BP -> buffer for character bitmap
  5886. Return: AL = status (00h successful, 01h failed)
  5887. SeeAlso: AH=09h,AX=5100h
  5888. --------J-105200-----------------------------
  5889. INT 10 - VIDEO - AX PC - SET VIRTUAL TEXT RAM BUFFER
  5890.     AX = 5200h
  5891.     BX = segment of buffer
  5892. Return: nothing
  5893. SeeAlso: AX=5201h
  5894. --------J-105201-----------------------------
  5895. INT 10 - VIDEO - AX PC - GET VIRTUAL TEXT RAM BUFFER
  5896.     AX = 5201h
  5897. Return: BX = segment of buffer or 0000h if failed
  5898. SeeAlso: AX=8300h,AH=FEh
  5899. ----------1053-------------------------------
  5900. INT 10 - Show Partner F/X v3.6 - START PRESENTATION
  5901.     AH = 53h
  5902.     DS:DX -> ASCIZ name of presentation file (no path, extension forced to
  5903.         .PR2)
  5904. Return: ???
  5905. SeeAlso: AH=55h
  5906. ----------1055-------------------------------
  5907. INT 10 - Show Partner F/X v3.6 - UNINSTALL
  5908.     AH = 55h
  5909. Return: FXSHOW.EXE removed from memory
  5910. SeeAlso: AH=53h
  5911. --------V-105555-----------------------------
  5912. INT 10 - VIDEO - ATI EGA/VGA Wonder Super Switch - INSTALLATION CHECK
  5913.     AX = 5555h
  5914. Return: AX = AAAAh    if installed
  5915.     BX:CX -> ??? routine in SMS.COM resident portion
  5916.           -> data area (see #0112) in VCONFIG
  5917. Program: Super Switch (SMS.COM) is a video mode switch program supplied with
  5918.       ATI EGA Wonder. It also maps video mode 08h to 27h or 23h.
  5919. SeeAlso: INT 10/AH=00h,INT 14/AX=AA01h,INT 2F/AX=6400h
  5920. Index:    screen saver;ATI Wonder SMS.COM
  5921.  
  5922. Format of ATI Super Switch data area:
  5923. Offset    Size    Description    (Table 0112)
  5924.  00h    DWORD    original INT 09 vector
  5925.  04h    DWORD    original INT 10 vector
  5926.  08h    DWORD    original INT 1C vector
  5927.  0Ch    WORD    screen saver state, 0=off, 1=on
  5928.  0Eh    WORD    blanking interval in clock ticks
  5929. --------V-105F00-----------------------------
  5930. INT 10 - Chips & Technologies Extended BIOS - RETURN CHIP INFORMATION
  5931.     AX = 5F00h
  5932. Return: AL = 5Fh function supported
  5933.         BL = chip type (see #0113)
  5934.         BH = video memory size (00h 256KB, 01h 512KB, 02h 1MB)
  5935.         CX = miscellaneous information (see #0114)
  5936. SeeAlso: AX=5F01h
  5937.  
  5938. Bitfields for Chips&Technologies chip type:
  5939. Bit(s)    Description    (Table 0113)
  5940.  7-4    chip type
  5941.     0000: 82c451
  5942.     0001: 82c452
  5943.     0010: 82c455
  5944.     0011: 82c453
  5945.     0101: 82c456
  5946.     0110: 82c457
  5947.     0111: F65520
  5948.     1000: F65530
  5949.     1100: F65535/F65545 ???
  5950.     1101: F65540
  5951.  3-0    revision number
  5952.  
  5953. Bitfields for Chips&Technologies miscellaneous information:
  5954. Bit(s)    Description    (Table 0114)
  5955.  0    DAC size (0=6-bit, 1=8-bit)
  5956.  1    system type (0=PC/AT, 1=PS/2)
  5957.  2    extended text modes supported by BIOS
  5958.  3    reserved
  5959.  4    extended graphics modes supported by BIOS
  5960.  5    reserved
  5961.  6    BIOS supports graphics cursor
  5962.  7    BIOS supports anti-aliased font
  5963.  8    BIOS supports pre-programmed emulation
  5964.  9    BIOS supports auto emulation
  5965.  10    BIOS supports variable mode set at cold boot
  5966.  11    BIOS supports variable mode set on warm boot
  5967.  12    BIOS supports emulation mode set at cold boot
  5968.  13    BIOS supports emulation mode set on warm boot
  5969.  14-15    reserved
  5970. --------V-105F00-----------------------------
  5971. INT 10 - VIDEO - Realtek RTVGA - RETURN CHIP VERSION
  5972.     AX = 5F00h
  5973. Return: AH = 00h, if successful
  5974.     AL = chip version (the same value that VTEST.EXE reads)
  5975.         00h RTG3103???
  5976.         01h RTG31030/RTG3105
  5977.         02h RTG3106???
  5978.         3Fh non-Realtek chip
  5979. BUG:    in v3.C10, AX=5F00h on return due to improper stack restoration code
  5980. SeeAlso: AX=5F01h"RTVGA"
  5981. --------V-105F01-----------------------------
  5982. INT 10 - Chips & Technologies Extended BIOS - SET PREPROGRAMMED EMULATION
  5983.     AX = 5F01h
  5984.     BL = emulation type (see #0115)
  5985. Return: AL = 5Fh if function supported
  5986.         AH = status
  5987.         00h unsuccessful
  5988.         01h successful
  5989. SeeAlso: AX=5F00h,AX=5F02h,AH=FFh"Oak"
  5990.  
  5991. (Table 0115)
  5992. Values for Chips&Technologies emulation type:
  5993.  00h,01h reserved
  5994.  02h    CGA
  5995.  03h    MDA
  5996.  04h    Hercules
  5997.  05h    EGA
  5998.  06h    VGA
  5999. --------V-105F01-----------------------------
  6000. INT 10 - VIDEO - Realtek RTVGA - WRITE RTVGA BIOS STRING TO DESTINATION
  6001.     AX = 5F01h
  6002.     ES:DI -> zero-filled buffer for BIOS ID string
  6003. Return: AH = 00h if successful
  6004.     ES:DI -> ASCII signature "REALTEK VGA BIOS Version 3C.10"
  6005. BUG:    in v3.C10, AX=5F01h on return due to improper stack restoration code
  6006. SeeAlso: AX=5F00h"RTVGA",AX=5F02h"RTVGA"
  6007. --------V-105F02-----------------------------
  6008. INT 10 - Chips & Technologies Extended BIOS - AUTO EMULATION CONTROL
  6009.     AX = 5F02h
  6010.     BL = new state of autmatic emulation (00h enabled, 01h disabled)
  6011. Return: AL = 5Fh if function supported
  6012.         AH = status
  6013.         00h unsuccessful
  6014.         01h successful
  6015. SeeAlso: AX=5F01h,AX=5F03h
  6016. --------V-105F02-----------------------------
  6017. INT 10 - VIDEO - Realtek RTVGA - RETURN RTVGA ON-BOARD MEMORY SIZE
  6018.     AX = 5F02h
  6019. Return: AH = 00h, if successful
  6020.     AL = on-board memory size
  6021.          (00h = 256K, 01h = 512K, 02h = 768K, 03h = 1024K)
  6022. BUG:    in v3.C10, AX=5F02h on return due to improper stack restoration code
  6023. SeeAlso: AX=5F01h"RTVGA",AX=5F03h"RTVGA"
  6024. --------V-105F03-----------------------------
  6025. INT 10 - VIDEO - Realtek RTVGA - SET ???
  6026.     AX = 5F03h
  6027.     BL = 0-3 (???)
  6028. Return: AH = 00h if successful
  6029. BUG:    in v3.C10, AX=5F03h on return due to improper stack restoration code
  6030. SeeAlso: AX=5F02h"RTVGA"
  6031. --------V-105F03BL00-------------------------
  6032. INT 10 - Chips & Technologies Extended BIOS - SET POWER-ON DISPLAY MODE
  6033.     AX = 5F03h
  6034.     BL = 00h
  6035.     CL = display mode
  6036.     CH = mode (see #0116)
  6037. Return: AL = 5Fh if function supported
  6038.         AH = status
  6039.         00h unsuccessful
  6040.         01h successful
  6041. SeeAlso: AX=5F02h,AX=5F03h/BL=01h"Chips",AX=5F90h
  6042.  
  6043. Bitfields for Chips&Technologies display mode:
  6044. Bit(s)    Description    (Table 0116)
  6045.  1-0    scanlines (00 = 200, 01 = 350, 10 = 400)
  6046.  7    persistence (0 reset on next boot, 1 until changed)
  6047. --------V-105F03BL01-------------------------
  6048. INT 10 - Chips & Technologies Extended BIOS - SET POWER-ON EMULATION MODE
  6049.     AX = 5F03h
  6050.     BL = 01h
  6051.     CL = emulation mode (see #0116)
  6052.     CH = permanence
  6053.         bit 7 persistence (0 reset on next boot, 1 until changed)
  6054. Return: AL = 5Fh if function supported
  6055.         AH = status
  6056.         00h unsuccessful
  6057.         01h successful
  6058. SeeAlso: AX=5F02h,AX=5F03h/BL=00h"Chips",AX=5F90h
  6059. --------V-105F10-----------------------------
  6060. INT 10 - Chips & Technologies Extended BIOS - ???
  6061.     AX = 5F10h
  6062.     DX = ???
  6063. Return: DX = ???
  6064. --------V-105F50-----------------------------
  6065. INT 10 - Chips & Technologies Extended BIOS - GET LAPTOP DISPLAY STATUS
  6066.     AX = 5F50h
  6067. Return: DL = display status (see #0117)
  6068. Note:    this call can be used on Toshiba laptops since ~1995 instead of
  6069.       INT 42/AX=7503h which is no longer supported with the F655xx chips
  6070. SeeAlso: INT 42/AX=7503h
  6071.  
  6072. Bitfields for display status:
  6073. Bit(s)    Description    (Table 0117)
  6074.  7-4    always 0 ???
  6075.  3    1: both displays active (bit 1 also set)
  6076.  2    1: normal (monochrome display only), 0: inverse or color
  6077.  1    1: internal display active, 0: external only
  6078.  0    always set ???
  6079. --------V-105F51-----------------------------
  6080. INT 10 - Chips & Technologies Extended BIOS - SET DISPLAY STATUS ???
  6081.     AX = 5F51h
  6082.     BX = ???
  6083. Return: nothing
  6084. --------V-105F5EBL00-------------------------
  6085. INT 10 - Chips & Technologies Extended BIOS - SET ???
  6086.     AX = 5F5Eh
  6087.     BL = 00h or 01h
  6088. Return: nothing
  6089. --------V-105F90-----------------------------
  6090. INT 10 - Chips & Technologies Extended BIOS - GET SUPERVGA STATE BUFFER SIZE
  6091.     AX = 5F90h
  6092.     CX = state mask (see #0118)
  6093. Return: AL = 5Fh if function supported
  6094.         BX = number of 64-byte blocks required
  6095. SeeAlso: AH=1Ch,AX=5F03h,AX=5F91h,AX=5F92h
  6096.  
  6097. Bitfields for Chips&Technologies state mask:
  6098. Bit(s)    Description    (Table 0118)
  6099.  0    video hardware
  6100.  1    BIOS data state
  6101.  2    DAC state
  6102.  15    type (0 all state info, 1 SuperVGA state only)
  6103. --------V-105F91-----------------------------
  6104. INT 10 - Chips & Technologies Extended BIOS - SAVE SUPERVGA STATE
  6105.     AX = 5F91h
  6106.     CX = state mask (see #0118)
  6107.     ES:BX -> save buffer
  6108. Return: AL = 5Fh if function supported
  6109.         buffer at ES:BX filled
  6110. SeeAlso: AH=1Ch,AX=5F03h,AX=5F90h,AX=5F92h
  6111. --------V-105F92-----------------------------
  6112. INT 10 - Chips & Technologies Extended BIOS - RESTORE SUPERVGA STATE
  6113.     AX = 5F92h
  6114.     CX = state mask (see #0118)
  6115.     ES:BX -> previously-filled save buffer
  6116. Return: AL = 5Fh if function supported
  6117. SeeAlso: AH=1Ch,AX=5F03h,AX=5F90h,AX=5F92h
  6118. --------V-1060------------------------------------
  6119. INT 10 - HUNTER 16 - SET GRAPHICS FONT
  6120.     AH = 60h
  6121.     AL = new font
  6122.         bit 7    output characters in reverse video
  6123.         bits 0-6 font number (see #0132 at AH=77h)
  6124. Return: BH = cell width
  6125.     BL = cell height
  6126. Desc:    select the font to use for output in mode 6; this can be used to mix
  6127.       fonts on the screen
  6128. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  6129.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  6130. SeeAlso: AH=04h"HUNTER",AH=73h"HUNTER",AH=77h"HUNTER"
  6131. --------V-1061------------------------------------
  6132. INT 10 - HUNTER 16 - MOVE CURSOR TO GRAPHICS CO-ORDINATES
  6133.     AH = 61h
  6134.     CX = column
  6135.     DX = row
  6136. Return: nothing
  6137. Note:    this function is only valid in graphics modes
  6138. SeeAlso: AH=62h
  6139. --------V-1062------------------------------------
  6140. INT 10 - HUNTER 16 - GET CURSOR POSITION IN GRAPHICS CO-ORDINATES
  6141.     AH = 62h
  6142. Return: CX = column
  6143.     DX = row
  6144. Note:    this function is only valid in graphics modes
  6145. SeeAlso: AH=61h
  6146. --------V-1063------------------------------------
  6147. INT 10 - HUNTER 16 - SET CONTRAST
  6148.     AH = 63h
  6149.     AL = contrast (0..127)
  6150. Return: nothing
  6151. Desc:    set the LCD screen contrast to improve visibility
  6152. SeeAlso: AH=64h,AH=75h
  6153. --------V-1064------------------------------------
  6154. INT 10 - HUNTER 16 - SET BACKLIGHT LEVEL
  6155.     AH = 64h
  6156.     AL = level (0..15)
  6157. Return: nothing
  6158. Desc:    set the LCD backlight level to improve visibility in bad lighting
  6159. SeeAlso: AH=63h,AH=65h,AH=74h,AH=78h"HUNTER",INT 15/AH=74h
  6160. --------V-106500----------------------------------
  6161. INT 10 - HUNTER 16 - GET BACKLIGHT TIMEOUT
  6162.     AX = 6500h
  6163. Return: BX = timeout in seconds (0-300)
  6164. Desc:    returns the time after which the backlight will turn off
  6165. SeeAlso: AH=63h,AH=64h,AX=6501h,INT 15/AH=74h
  6166. --------V-106501----------------------------------
  6167. INT 10 - HUNTER 16 - SET BACKLIGHT TIMEOUT
  6168.     AX = 6501h
  6169.     BX = timeout in seconds (0-300)
  6170. Return: nothing
  6171. Desc:    set the idle time after which the backlight will turn off
  6172. SeeAlso: AH=64h,AX=6500h
  6173. --------V-1066------------------------------------
  6174. INT 10 - HUNTER 16 - SPLIT DISPLAY
  6175.     AH = 66h
  6176.     AL = control bits (see #0119)
  6177.     BH = top row of lower section of LCD (0..7)
  6178.     BL = top row of lower section of the virtual screen (0..24)
  6179. Return: nothing
  6180. Desc:    split the LCD screen horizontally into two parts; each part may be
  6181.       individually scrollable or fixed.
  6182. Note:    the Hunter 16 has a 240x64 LCD display which serves as a window into
  6183.       a 640x200 virtual screen
  6184.  
  6185. Bitfields for HUNTER 16 control bits:
  6186. Bit(s)    Description    (Table 0119)
  6187.  0-1    01: no split, 10: allow split
  6188.  2    allow scrolling the upper part
  6189.  3    allow scrolling the lower part
  6190. --------V-106A00BX0000-----------------------
  6191. INT 10 - Direct Graphics Interface Standard (DGIS) - INQUIRE AVAILABLE DEVICES
  6192.     AX = 6A00h
  6193.     BX = 0000h
  6194.     CX = 0000h
  6195.     DX = buffer length (may be 0)
  6196.     ES:DI -> buffer
  6197. Return: BX = number of bytes stored in buffer
  6198.     CX = bytes required for all descriptions (0 if no DGIS)
  6199. Note:    buffer contains descriptions and addresses of DGIS-compatible
  6200.       display(s) and printer(s)
  6201. SeeAlso: AX=6A02h
  6202. --------V-106A01CX0000-----------------------
  6203. INT 10 - Direct Graphics Interface Standard (DGIS) - REDIRECT CHARACTER OUTPUT
  6204.     AX = 6A01h
  6205.     CX = 0000h
  6206.     ES:DI = address of device to send INT 10 output to
  6207. Return: CX = 0000h  output could not be redirected
  6208.          else INT 10h output now routed to requested display
  6209. SeeAlso: AX=6A02h
  6210. --------V-106A02-----------------------------
  6211. INT 10 - DGIS - INQUIRE INT 10 OUTPUT DEVICE
  6212.     AX = 6A02h
  6213.     ES:DI = 0000h:0000h
  6214. Return: ES:DI = 0000h:0000h  if current display is non-DGIS
  6215.         else address of the current DGIS INT 10 display
  6216. SeeAlso: AX=6A00h,AX=6A01h
  6217. --------V-106D74-----------------------------
  6218. INT 10 - MTRFONTS - INSTALLATION CHECK
  6219.     AX = 6D74h ('mt')
  6220.     DS:0104h = signature "MtRfOnTs"
  6221. Return: AX = 4D54h ('MT') if installed
  6222.         ES = PSP segment of resident code
  6223. Program: MTRFONTS is a shareware TSR (part of the MTR package) by Mechon Mamre
  6224.       which provides Hebrew screen fonts
  6225. SeeAlso: INT 16/AX=6D74h"MTRTSR"
  6226. --------V-106E00-----------------------------
  6227. INT 10 - Paradise VGA internal - GET ???
  6228.     AX = 6E00h
  6229. Return: BX = 5744h ('WD') if supported
  6230.         DH:AH:AL = last three ASCII digits of ROM serial number
  6231.         CL = ???
  6232.         CH = ???
  6233. SeeAlso: AX=6E04h,AX=6E05h
  6234. --------V-106E04-----------------------------
  6235. INT 10 - Paradise VGA internal - GET SCREEN SIZE AND ???
  6236.     AX = 6E04h
  6237. Return: BX = screen width (columns)
  6238.     CX = screen height (lines)
  6239.     AH = ??? (05h or FFh)
  6240.     AL = ??? (04h or video mode)
  6241. SeeAlso: AX=6E00h,AX=6E05h
  6242. --------V-106E05-----------------------------
  6243. INT 10 - Paradise VGA internal - SET MODE
  6244.     AX = 6E05h
  6245.     BL = mode
  6246. Return: nothing
  6247. Note:    like AH=00h, AL=BL.
  6248. SeeAlso: AH=00h,AX=6E00h,AX=6E04h,AX=6F05h
  6249. --------V-106F00-----------------------------
  6250. INT 10 - HP Vectra EX-BIOS - INSTALLATION CHECK
  6251.     AX = 6F00h
  6252.     BX <> 4850h (usually set to 0000h for simplicity)
  6253. Return: BX = 4850h ('HP') indicates HP Extended BIOS video functions present
  6254.     AX destroyed
  6255. SeeAlso: AX=6F00h"Video7",AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,AX=6F05h
  6256. SeeAlso: INT 14/AX=6F00h,INT 16/AX=6F00h,INT 17/AX=6F00h,INT 33/AX=6F00h
  6257. --------V-106F00BX0000-----------------------
  6258. INT 10 - VIDEO - Video7 VGA,VEGA VGA - INSTALLATION CHECK
  6259.     AX = 6F00h
  6260.     BX = 0000h
  6261. Return: BX = 5637h ('V7') indicates Video7 VGA/VEGA VGA extensions are present
  6262. SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,AX=6F05h
  6263. --------V-106F01-----------------------------
  6264. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP EX-BIOS - GET MONITOR INFO
  6265.     AX = 6F01h
  6266. Return: AL = monitor type code (HP,VEGA VGA only) (see #0120)
  6267.     AH = status register information (see #0121)
  6268.     CL = current value of Extended Control register (HP Ext BIOS, and only
  6269.         if AL=41h) (see #0122)
  6270. Notes:    bits 0-3 are the same as the EGA/VGA status register bits 0-3
  6271.     supported by original HP Vectra AT and by ES/QS/RS series Vectras
  6272.  
  6273. (Table 0120)
  6274. Values for monitor type code (HP Extended BIOS):
  6275.  00h    non-HP card with ROM and possibly its own INT 10h driver
  6276.  41h    MultiMode video display adapter
  6277.  42h-44h reserved
  6278.  45h    industry standard monochrome display adapter
  6279.  46h    industry standard color display adapter
  6280.  51h    reserved
  6281.  
  6282. Bitfields for status register information:
  6283. Bit(s)    Description    (Table 0121)
  6284.  0    display enable
  6285.     0 = display enabled
  6286.     1 = vertical or horizontal retrace in progress
  6287.  1    light pen flip flop set
  6288.  2    light pen switch activated
  6289.  3    vertical sync
  6290.  4    monitor resolution
  6291.     0 = high resolution (>200 lines)
  6292.     1 = low resolution (<=200 lines)
  6293.  5    display type (0 = color, 1 = monochrome)
  6294.  6,7    diagnostic bits
  6295. Note:    bits 0-3 are the same as the EGA/VGA status register bits 0-3
  6296. --------V-106F02-----------------------------
  6297. INT 10 - HP Vectra EX-BIOS - SET MONITOR INFO
  6298.     AX = 6F02h
  6299.     BL = new value for extended control register (see #0122)
  6300. Return: AX,BL destroyed
  6301. Notes:    this function is only valid when an HP MultiMode Video Display Adapter
  6302.       is installed
  6303.     the Extended Control register is at I/O address 3DDh
  6304. SeeAlso: AX=6F01h,AX=6F03h
  6305.  
  6306. Bitfields for HP Vectra extended control register:
  6307. Bit(s)    Description    (Table 0122)
  6308.  0    screen resolution (0 = 200 lines, 1 = 400 lines)
  6309.  1    underline enable (if set, 'blue' of fg color = underline)
  6310.  2    font (0 = Standard-8, 1 = HP-Roman-8)
  6311.  3    memory disabled for CPU access
  6312.  4    allow access to full 32K memory instead of wrapping at 16K
  6313.  5    select second 16K page instead of first
  6314.  6,7    unused
  6315. --------V-106F03-----------------------------
  6316. INT 10 - HP Vectra EX-BIOS - MODIFY MONITOR INFO
  6317.     AX = 6F03h
  6318.     BH = exclude mask (set bits are not modified)
  6319.     BL = new values for bits indicated by BH (see #0122)
  6320. Return: AX destroyed
  6321. Notes:    this function is only valid when an HP MultiMode Video Display Adapter
  6322.       is installed
  6323.     supported by original HP Vectra AT and by ES/QS/RS series Vectras
  6324. SeeAlso: AX=6F01h,AX=6F02h
  6325. --------V-106F04-----------------------------
  6326. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Vectra - GET MODE AND SCREEN RESOLUTION
  6327.     AX = 6F04h
  6328. Return: AL = current video mode (see #0123)
  6329.     BX = horizontal columns (text) or pixels (graphics)
  6330.     CX = vertical columns (text) or pixels (graphics)
  6331. SeeAlso: AX=6F05h
  6332. --------V-106F05-----------------------------
  6333. INT 10 - VIDEO - Video7 VGA,VEGA EXTENDED EGA/VGA,HP Vectra - SET VIDEO MODE
  6334.     AX = 6F05h
  6335.     BL = mode (see #0123)
  6336. Return: AX,BL destroyed
  6337. Notes:    also supported by the HP Vectra Extended BIOS on the original
  6338.       HP Vectra AT and by ES/QS/RS series Vectras
  6339.     on the HP Vectra, this function rather than AH=00h must be used to
  6340.       return to an IBM-standard mode after setting an HP-specified mode
  6341.       from 08h to 0Fh.
  6342. SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
  6343.  
  6344. (Table 0123)
  6345. Values for Video7/VEGA video mode:
  6346.      text/ text pixel    pixel    colors disply scrn  system
  6347.      grph resol     box  resolution       pages  addr
  6348.  00h-13h = standard IBM modes (see #0009 at AH=00h)
  6349.  08h = T  80x27      .      .    mono      .    .  HP MultiMode Video
  6350.  09h = T  80x27      .      .      .      .    .  HP MultiMode Video
  6351.  0Ah = T  40x27      .      .    mono      .    .  HP MultiMode Video
  6352.  0Bh = T  40x27      .      .      .      .    .  HP MultiMode Video
  6353.  0Ch = reserved                       HP MultiMode Video
  6354.  0Dh = G    .      .    640x400      .      .    .  HP MultiMode Video
  6355.  0Eh = G    .      .    320x400      .      .    .  HP MultiMode Video
  6356.  0Fh = G    .      .    320x400      .      .    .  HP MultiMode Video
  6357.  40h = T  80x43     8x8      .      .      .    .  Video7/VEGA VGA
  6358.  41h = T 132x25     8x14      .      .      .    .  Video7/VEGA VGA
  6359.  42h = T 132x43     8x8      .      .      .    .  Video7/VEGA VGA
  6360.  43h = T  80x60     8x8      .      .      .    .  Video7/VEGA VGA
  6361.  44h = T 100x60     8x8      .      .      .    .  Video7/VEGA VGA
  6362.  45h = T 132x28     8x8      .      .      .    .  Video7/VEGA VGA
  6363.  60h = G    .      .    752x410     16      .    .  Video7 VGA, VEGA VGA
  6364.  61h = G    .      .    720x540     16      .    .  Video7 VGA, VEGA VGA
  6365.      = G    .      .    720x540     16      .    .  Northgate, Headland 1024i
  6366.  62h = G    .      .    800x600     16      .    .  Video7 VGA, VEGA Ext EGA
  6367.      = G    .      .    800x600     16      .    .  Headland 1024i
  6368.  63h = G    .      .   1024x768      2      .    .  Video7 VGA
  6369.  64h = G    .      .   1024x768      4      .    .  Video7 VGA
  6370.  65h = G    .      .   1024x768     16      .    .  Video7 VGA, VEGA Ext EGA
  6371.      = G    .      .   1024x768     16      .    .  Headland 1024i
  6372.  66h = G    .      .    640x400    256      .    .  Video7 VGA, VEGA Ext VGA
  6373.      = G    .      .    640x400    256      .    .  Northgate, Headland 1024i
  6374.  67h = G    .      .    640x480    256      .    .  Video7 VGA, VEGA Ext VGA
  6375.      = G    .      .    640x480    256      .    .  Headland 1024i
  6376.  68h = G    .      .    720x540    256      .    .  Video7 VGA, VEGA Ext VGA
  6377.      = G    .      .    720x540    256      .    .  Headland 1024i
  6378.  69h = G    .      .    800x600    256      .    .  Video7 VGA, VEGA Ext VGA
  6379.      = G    .      .    800x600    256      .    .  Headland 1024i
  6380.  70h = G    .      .    752x410     16gray      .    .  Video7 VGA, VEGA VGA
  6381.  71h = G    .      .    720x540     16gray      .    .  Video7 VGA, VEGA VGA
  6382.  72h = G    .      .    800x600     16gray      .    .  Video7 VGA
  6383.  73h = G    .      .   1024x768      2gray      .    .  Video7 VGA
  6384.  74h = G    .      .   1024x768      4gray      .    .  Video7 VGA
  6385.  75h = G    .      .   1024x768     16gray      .    .  Video7 VGA
  6386.  76h = G    .      .    640x400    256gray      .    .  Video7 VGA
  6387.  77h = G    .      .    640x480    256gray      .    .  Video7 VGA
  6388.  78h = G    .      .    720x540    256gray      .    .  Video7 VGA
  6389.  79h = G    .      .    800x600    256gray      .    .  (future)
  6390. SeeAlso: AH=00h,#0009,AX=0070h,#0010,AX=007Eh,AX=6F04h,#0081
  6391. Index:    video modes;Video 7|video modes;VEGA|video modes;Headland
  6392. --------V-106F06-----------------------------
  6393. INT 10 - VIDEO - Video7 VGA,VEGA VGA - SELECT AUTOSWITCH MODE
  6394.     AX = 6F06h
  6395.     BL = Autoswitch mode select
  6396.          00h select EGA/VGA-only modes
  6397.          01h select Autoswitched VGA/EGA/CGA/MGA modes
  6398.          02h select 'bootup' CGA/MGA modes
  6399.     BH = enable/disable (00h enable, 01h = disable selection)
  6400. Return: nothing
  6401. --------V-106F07-----------------------------
  6402. INT 10 - VIDEO -  Video7 VGA,VEGA VGA - GET VIDEO MEMORY CONFIGURATION
  6403.     AX = 6F07h
  6404. Return: AL = 6Fh
  6405.     AH = memory configuration
  6406.         bits 0-6 = number of 256K blocks of video memory
  6407.         bit 7    = DRAM/VRAM (0: DRAM, 1: VRAM)
  6408.     BH = chip revision (SR8F) (S/C Chip in VEGA VGA)
  6409.     BL = chip revision (SR8E) (G/A Chip in VEGA VGA)
  6410.     CX = 0000h
  6411. SeeAlso: AH=12h/BL=10h
  6412. --------V-1070-------------------------------
  6413. INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF VIDEO RAM
  6414.     AH = 70h
  6415. Return: AX:BX -> WORD containing green plane's offset
  6416.     AX:CX -> WORD containing green plane's segment
  6417.     AX:DX -> WORD containing segment of red (offset 0) and blue (offset
  6418.             4000) planes
  6419. SeeAlso: AH=71h
  6420. --------V-1070------------------------------------
  6421. INT 10 - HUNTER 16 - DRAW ELLIPSE/CIRCLE
  6422.     AH = 70h
  6423.     DS:BX -> control block (see #0124)
  6424. Return: nothing
  6425. Desc:    Draws a circle or ellipse. Only valid in graphics modes.
  6426. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  6427.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  6428. SeeAlso: AH=71h"HUNTER"
  6429.  
  6430. Format of HUNTER 16 control block:
  6431. Offset    Size    Description    (Table 0124)
  6432.  00h    WORD    center X co-ordinate
  6433.  02h    BYTE    center Y co-ordinate
  6434.  03h    WORD    radius in pixels
  6435.  05h    BYTE    color (00h white, 01h black, FFh invert)
  6436.  06h    BYTE    aspect ratio x:x (1-127)
  6437.  07h    BYTE    aspect ratio y:y (1-127)
  6438. --------V-107000BX0000-----------------------
  6439. INT 10 - Everex Extended Video BIOS - RETURN EMULATION STATUS
  6440.     AX = 7000h
  6441.     BX = 0000h
  6442. Return: AL = 70h if Trident-based Everex card
  6443.     CL = monitor type (see #0125)
  6444.     CH = feature bits (see #0126)
  6445.     DX = video board info
  6446.         bits 4-15: board ID model (see #0127)
  6447.         bits 0-3:  board ID revision
  6448.     DI = BCD BIOS version number
  6449. SeeAlso: AX=5F01h,AH=FFh"Oak"
  6450.  
  6451. (Table 0125)
  6452. Values for Everex monitor type:
  6453.  00h    mono
  6454.  01h    CGA
  6455.  02h    EGA
  6456.  03h    digital multifrequency
  6457.  04h    IBM PS/2
  6458.  05h    IBM 8514
  6459.  06h    SuperVGA
  6460.  07h    analog multifrequency
  6461.  08h    super multifrequency
  6462.  
  6463. Bitfields for Everex feature bits:
  6464. Bit(s)    Description    (Table 0126)
  6465.  7-6    memory size
  6466.     00 = 256K
  6467.     01 = 512K
  6468.     10 = 1024K
  6469.     11 = 2048K
  6470.  5    special oscillator present
  6471.  4    VGA protect enabled
  6472.  0    6845 emulation
  6473.  
  6474. (Table 0127)
  6475. Values for board model for Trident-based Everex cards:
  6476.  0236h    Ultragraphics II
  6477.  0620h    Vision VGA
  6478.  0673h    EVGA
  6479.  0678h    Viewpoint
  6480. --------V-107000BX0004-----------------------
  6481. INT 10 - Everex Extended Video BIOS - GET PAGING FUNCTION POINTER FOR CURR MODE
  6482.     AX = 7000h
  6483.     BX = 0004h
  6484. Return: ES:DI -> FAR paging function (call with DL = page to set)
  6485. Note:    the word preceding ES:DI is the length of the function in bytes, and
  6486.       the last byte of the function is a FAR return instruction.
  6487. SeeAlso: AX=4F05h,AX=7000h/BX=0000h,AX=7000h/BX=0005h
  6488. --------V-107000BX0005-----------------------
  6489. INT 10 - Everex Extended Video BIOS - GET SUPPORTED MODE INFO
  6490.     AX = 7000h
  6491.     BX = 0005h
  6492.     CL = maximum number of modes to get info for
  6493.     CH = mode type to get info for (see #0128)
  6494.     DL = monitor type to get info for
  6495.     ES:DI -> buffer for mode info (see #0129)
  6496. Return: CL = total number of modes fitting criteria
  6497.     CH = size of each info record
  6498. SeeAlso: AX=7000h/BX=0000h,AX=7000h/BX=0004h
  6499.  
  6500. (Table 0128)
  6501. Values for Everex mode type:
  6502.  00h    all modes
  6503.  01h    monochrome text modes
  6504.  02h    color text modes
  6505.  03h    four-color CGA graphics modes
  6506.  04h    two-color CGA graphics modes
  6507.  05h    16-color graphics modes
  6508.  06h    256-color graphics modes
  6509.  
  6510. Format of Everex mode information record:
  6511. Offset    Size    Description    (Table 0129)
  6512.  00h    BYTE    mode number (bit 7 set if extended mode)
  6513.  01h    BYTE    mode type (see #0128)
  6514.  02h    BYTE    info bits (see #0130)
  6515.  03h    BYTE    font height
  6516.  04h    BYTE    text columns on screen
  6517.  05h    BYTE    text rows on screen
  6518.  06h    WORD    number of scan lines
  6519.  08h    BYTE    color information
  6520.         bits 7-4 reserved
  6521.              3-0 bits per pixel
  6522.  
  6523. Bitfields for Everex info bits:
  6524. Bit(s)    Description    (Table 0130)
  6525.  7,6    reserved
  6526.  5    monochrome mode
  6527.  4    interlaced display
  6528.  3    requires special oscillator
  6529.  2,1    memory required (00 = 256K, 01 = 512K, 10 = 1024K, 11 = 2048K)
  6530.  0    reserved
  6531. --------V-1071-------------------------------
  6532. INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF INCRAM
  6533.     AH = 71h
  6534. Return: AX:BX -> WORD containing segment address of INCRAM
  6535.     AX:CX -> WORD containing offset of INCRAM
  6536. SeeAlso: AH=70h"TANDY"
  6537. --------V-1071------------------------------------
  6538. INT 10 - HUNTER 16 - DRAW LINE/BOX
  6539.     AH = 71h
  6540.     DS:BX -> control block (see #0131)
  6541. Return: nothing
  6542. Desc:    Draws a line or box. Only valid in graphics modes.
  6543. SeeAlso: AH=70h"HUNTER"
  6544.  
  6545. Format of HUNTER 16 control block:
  6546. Offset    Size    Description    (Table 0131)
  6547.  00h    WORD    left edge X co-ordinate
  6548.  02h    BYTE    lower edge Y co-ordinate
  6549.  03h    WORD    right edge X co-ordinate
  6550.  05h    BYTE    upper edge Y co-ordinate
  6551.  06h    BYTE    color (00h white, 01h black, FFh invert)
  6552.  07h    BYTE    type (00h line, 01h box)
  6553.  08h    BYTE    if non-zero (and type is BOX) fill with color
  6554. --------V-1072-------------------------------
  6555. INT 10 - VIDEO - TANDY 2000 only - SCROLL RIGHT PART OR ALL OF SCREEN
  6556.     AH = 72h
  6557.     AL = number of columns to shift scroll area, 00h to clear entire area
  6558.     BH = new attributes for blanked columns at left
  6559.     CH,CL = row, column of upper left corner of scroll area
  6560.     DH,DL = row, column of lower right corner of scroll area
  6561. Return: nothing
  6562. SeeAlso: AH=06h,AH=07h,AH=73h"TANDY",INT 15/AH=12h/BH=05h
  6563. --------V-1072------------------------------------
  6564. INT 10 - HUNTER 16 - SELECT TEXT-MODE INVERSE VIDEO MECHANISM
  6565.     AH = 72h
  6566.     AL = mechanism to use
  6567.         00h do not use inverse video
  6568.         01h emulate MDA. Display attribute 07h is normal video and 70h is
  6569.         inverse video.
  6570.         02h use inverse video if background is non-black.
  6571.         03h use inverse video for high intensity text.
  6572.         04h use inverse video for text with background intensity greater
  6573.         than foreground intensity.
  6574.         05h use inverse video for text with background color other than
  6575.         black or high intensity foreground.
  6576. Return: nothing
  6577. SeeAlso: AH=70h"HUNTER",AH=71h"HUNTER"
  6578. --------V-1073-------------------------------
  6579. INT 10 - VIDEO - TANDY 2000 only - SCROLL LEFT PART OR ALL OF SCREEN
  6580.     AH = 73h
  6581.     AL = number of columns to shift scroll area, 00h to clear entire area
  6582.     BH = new attributes for blanked columns at right
  6583.     CH,CL = row, column of upper left corner of scroll area
  6584.     DH,DL = row, column of lower right corner of scroll area
  6585. Return: nothing
  6586. SeeAlso: AH=06h,AH=07h,AH=72h"TANDY",INT 15/AH=12h/BH=05h
  6587. --------V-1073------------------------------------
  6588. INT 10 - HUNTER 16 - SELECT TEXT FONT
  6589.     AH = 73h
  6590.     AL = new font
  6591.           00h  7x7 in a 8x8 cell
  6592.           01h  5x7 in a 6x8 cell
  6593.           06h  3x5 in a 4x6 cell
  6594. Return: BH = cell width
  6595.     BL = cell height
  6596. SeeAlso: AH=60h"HUNTER",AH=77h"HUNTER"
  6597. --------V-1074------------------------------------
  6598. INT 10 - HUNTER 16 - SET LCD WINDOWS POSITION
  6599.     AH = 74h
  6600.     DH = row (0..24)
  6601.     DL = column (0..79)
  6602. Return: nothing
  6603. Desc:    set the position in the virtual screen being displayed in the LCD
  6604.       screen. If Split Screen (INT 10/AH=66h) is used, this call sets the
  6605.       position for the window which has the cursor.
  6606. SeeAlso: AH=66h"HUNTER",AH=75h,AH=76h
  6607. --------V-1075------------------------------------
  6608. INT 10 - HUNTER 16 - SET ZOOM
  6609.     AH = 75h
  6610.     AL = new Zoom state (00h off, nonzero on)
  6611. Return: nothing
  6612. SeeAlso: AH=74h,AH=76h
  6613. --------V-1076------------------------------------
  6614. INT 10 - HUNTER 16 - LOOKING KEYS
  6615.     AH = 76h
  6616.     AL = action
  6617.          00h home the window
  6618.          01h move up one line
  6619.          02h move down one line
  6620.          03h move left one character
  6621.          04h move right one character
  6622.          05h flip window to other side of virtual screen
  6623. Return: nothing
  6624. Desc:    moves the displayed screen around the virtual screen
  6625. SeeAlso: AH=74h,AH=75h
  6626. --------V-1077------------------------------------
  6627. INT 10 - HUNTER 16 - GET GRAPHICS FONT
  6628.     AH = 77h
  6629. Return: AL = font number (see #0132)
  6630. SeeAlso: AH=60h"HUNTER",AH=73h"HUNTER"
  6631.  
  6632. (Table 0132)
  6633. Values for HUNTER 16 graphics font number:
  6634.  00h     7x7  in a  8x8     cell
  6635.  01h     5x7  in a  6x8     cell
  6636.  02h     7x9  in a  8x10 cell
  6637.  03h    14x9  in a 16x10 cell
  6638.  04h     7x18 in a  8x20 cell
  6639.  05h    14x18 in a 16x20 cell
  6640.  06h     3x5  in a  4x6     cell
  6641. Note:    size is X * Y
  6642. --------V-1078------------------------------------
  6643. INT 10 - HUNTER 16 - TURN BACKLIGHT ON/OFF
  6644.     AH = 78h
  6645.     AL = new state of backlight (00h on, 01h off)
  6646. Return: nothing
  6647. SeeAlso: AH=64h,INT 15/AH=74h
  6648. --------V-107F-------------------------------
  6649. INT 10 - Paradise SVGA - WD90C24 INSTALLATION CHECK
  6650.     AH = 7Fh
  6651. Return: AX = 1234h if WD90C24 chip installed
  6652. --------V-107F00-----------------------------
  6653. INT 10 - SOLLEX SuperVGA - GET EXTENSIONS INFO
  6654.     AX = 7F00h
  6655. Return: AL <> 7Fh if not supported
  6656.     AL = 7Fh if supported
  6657.         AH = status
  6658.         00h successful
  6659.             ES:DI -> info structure (see #0133)
  6660.         01h failed
  6661. Program: the SOLLEX (Smos videO controLLer EXtensions) SuperVGA functions are
  6662.       an extension to the VESA SuperVGA BIOS Extensions (see AX=4F00h) by
  6663.       Seiko Epson Corporation intended to provided a standardized interface
  6664.       to SuperVGA functionality not addressed by the VESA standard
  6665. SeeAlso: AX=4F00h
  6666.  
  6667. Format of SOLLEX SuperVGA info structure:
  6668. Offset    Size    Description    (Table 0133)
  6669.  00h    DWORD    pointer to VESA function dispatch table
  6670.  04h    DWORD    pointer to SOLLEX function dispatch table
  6671.  08h    DWORD    pointer to VESA SuperVGA info (see #0075 at AX=4F00h)
  6672.  0Ch    DWORD    pointer to mode info structure table, consisting of
  6673.           alternating ResInfo (see #0134) and VESA mode information
  6674.           (see #0077 at AX=4F01h) blocks, terminated with an FFFFh word
  6675.  10h    DWORD    pointer to font info structure table (see #0135)
  6676.  14h    WORD    high resolution crystal frequency in Hz (0000h = not present)
  6677.  16h    DWORD    pointer to ASCIZ ID string
  6678.  1Ah    DWORD    pointer to timeout reset table
  6679.         array of bytes, each a multiple of the minimum time increment
  6680.  1Eh    WORD    minimum time increment in timer ticks
  6681.  20h    BYTE    inverse options supported
  6682.         bit 0: inverse supported
  6683.         bits 1-7: reserved
  6684.  21h    BYTE    normal color value
  6685.  22h    BYTE    inverse color value
  6686.  23h    WORD    port to be accessed for normal/inverse settings
  6687.  25h    WORD    type of interface chip (currently undefined)
  6688.  27h    WORD    program operational mode
  6689.         bits 1-0: 00 no preference
  6690.               01 terse (minimum detail in program messages)
  6691.               10 verbose
  6692.               11 use menus if supported, verbose mode otherwise
  6693.         bits 7-2: reserved
  6694.  29h    WORD    SOLLEX specification version
  6695.  2Bh    WORD    version of VESA/SOLLEX implementation
  6696.  2Dh    DWORD    offset to relocatable portion of SOLLEX extensions (for CONFIG)
  6697.  2Eh    DWORD    offset to unused section of the extensions ROM
  6698.  31h 16 BYTEs    reserved
  6699. Note:    all DWORD pointers initially require segment fixups; if the segment
  6700.       is 0000h, it should be changed to the returned ES, otherwise it
  6701.       may be assumed to be correct
  6702.  
  6703. Format of SOLLEX SuperVGA ResInfo:
  6704. Offset    Size    Description    (Table 0134)
  6705.  00h    WORD    16-bit mode number
  6706.  02h    WORD    adapter type (00h VGA, 01h EGA, 02h CGA, 03h MDA)
  6707.  04h    WORD    display info (see #0138)
  6708.  06h    DWORD    pointer to video parameter table
  6709.  0Ah    BYTE    replacement entry in master Video Parameter
  6710.  0Bh    BYTE    mode requested for mode set by BIOS
  6711.  0Ch    DWORD    pointer to LoadReg table
  6712.  10h    BYTE    index into table of clock values (see #0136)
  6713. SeeAlso: #0133
  6714.  
  6715. Format of SOLLEX SuperVGA font info table [array] entry:
  6716. Offset    Size    Description    (Table 0135)
  6717.  00h    BYTE    required font height
  6718.  01h    BYTE    parameter to load text mode font
  6719.  02h    BYTE    parameter to load graphics mode font
  6720. SeeAlso: #0133
  6721.  
  6722. (Table 0136)
  6723. Values for SOLLEX SuperVGA clock value index:
  6724.  00h    25 MHz
  6725.  01h    28 MHz
  6726.  02h    PCLK
  6727.  03h    31.5 MHz (VESA 640x480)
  6728.  04h    reserved
  6729.  05h    16 MHz (EGA)
  6730.  06h    PCLK
  6731.  07h    24 MHz (EGA)
  6732.  08h    25 MHz
  6733.  09h    28 MHz
  6734.  0Ah    36 MHz
  6735.  0Bh    45 MHz (for 1024x768)
  6736.  0Ch    80 MHz
  6737.  0Dh    40 MHz
  6738.  0Eh    65 MHz
  6739.  0Fh     1 MHz (for powerdown)
  6740. SeeAlso: #0133
  6741. --------V-107F00BX4000-----------------------
  6742. INT 10 - Diamond Stealth 24 - GET S3 INFORMATION BLOCK
  6743.     AX = 7F00h
  6744.     BX = 4000h
  6745. Return: AX = 007Fh if supported
  6746.         DX:BX -> DAC set mode routine
  6747. SeeAlso: AX=7F00h/BX=4001h,AX=7F00h/BX=4002h,#0656 at INT 1A/AX=B102h
  6748. --------V-107F00BX4001-----------------------
  6749. INT 10 - Diamond Stealth 24 - GET LINEAR ADDRESS
  6750.     AX = 7F00h
  6751.     BX = 4001h
  6752. Return: AX = 007Fh if supported
  6753.         CX = current linear address base (high word)
  6754. SeeAlso: AX=7F00h/BX=4000h,AX=7F00h/BX=4002h
  6755. --------V-107F00BX4002-----------------------
  6756. INT 10 - Diamond Stealth 24 - SET LINEAR ADDRESS
  6757.     AX = 7F00h
  6758.     BX = 4002h
  6759.     CX = new linear address base (high word)
  6760. Return: AX = 007Fh if supported
  6761. SeeAlso: AX=7F00h/BX=4000h,AX=7F00h/BX=4001h
  6762. --------V-107F01BL00-------------------------
  6763. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - SET ADAPTER
  6764.     AX = 7F01h
  6765.     BL = 00h
  6766.     CX = adapter request (see #0137)
  6767. Return: AL <> 7Fh if not supported
  6768.     AL = 7Fh if supported
  6769.         AH = status
  6770.         00h successful
  6771.         01h failed
  6772. Note:    initializes video hardware to a particular standard
  6773. SeeAlso: AX=7F00h"SOLLEX",AX=7F01h/BL=01h,AX=7F01h/BL=02h
  6774.  
  6775. Bitfields for SOLLEX SuperVGA adapter request:
  6776. Bit(s)    Description    (Table 0137)
  6777.  1-0    adapter type (00 VGA, 01 EGA, 10 CGA, 11 MDA)
  6778.  2    reserved
  6779.  4-3    change displays (00 none, 01 analog 10 digital 11 panel)
  6780.  6-5    desired monitor sense (01 color, 10 mono, 11=8514)
  6781.  7    lock override
  6782.  8    alternate adapter mode
  6783.  15-9    reserved
  6784. --------V-107F01BL01-------------------------
  6785. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - GET ADAPTER
  6786.     AX = 7F01h
  6787.     BL = 01h
  6788. Return: AL <> 7Fh if not supported
  6789.     AL = 7Fh if supported
  6790.         AH = status
  6791.         00h successful
  6792.         01h failed
  6793.         BX = adapter type (see #0137)
  6794.         DX = display type (see #0138)
  6795. SeeAlso: AX=7F00h"SOLLEX",AX=7F01h/BL=00h,AX=7F01h/BL=02h
  6796.  
  6797. Bitfields for SOLLEX SuperVGA display type:
  6798. Bit(s)    Description    (Table 0138)
  6799.  15-9    reserved
  6800.  8    alternate display active
  6801.  7    Enhanced Color Display monitor active
  6802.  6    multi-frequency digital monitor active
  6803.  5    PS/2-type monitor active
  6804.  4    plasma/electroluminescent panel active
  6805.  3    LCD panel active
  6806.  2    multi-frequency analog monitor active
  6807.  1-0    monitor sense (00 none, 01 color, 10 mono, 11=8514)
  6808. --------V-107F01BL02-------------------------
  6809. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - DETERMINE ADAPTER SUPPORT
  6810.     AX = 7F01h
  6811.     BL = 02h
  6812.     CX = adapter request (see #0137)
  6813. Return: AL <> 7Fh if not supported
  6814.     AL = 7Fh if supported
  6815.         AH = status
  6816.         00h requested setting can successfully be made
  6817.         01h requested setting not available in this configuration
  6818. SeeAlso: AX=7F00h"SOLLEX",AX=7F01h/BL=00h
  6819. --------V-107F02BL00-------------------------
  6820. INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - SET DISPLAY OUTPUT
  6821.     AX = 7F02h
  6822.     BL = 00h
  6823.     CX = display output setting (see #0139)
  6824. Return: AL <> 7Fh if not supported
  6825.     AL = 7Fh if supported
  6826.         AH = status
  6827.         00h successful
  6828.         01h failed
  6829. SeeAlso: AX=7F00h"SOLLEX",AX=7F02h/BL=00h
  6830.  
  6831. Bitfields for SOLLEX SuperVGA display output setting:
  6832. Bit(s)    Description    (Table 0139)
  6833.  0    CRTC control in 2,1 valid
  6834.  1    enable digital output
  6835.  2    enable analog output
  6836.  3    panel control in 5,4 valid
  6837.  4    enable LCD output
  6838.  5    enable plasma/EL output
  6839.  6    inverse control in 7 valid
  6840.  7    0=normal, 1=inverse
  6841.  15-8    reserved
  6842. --------V-107F02BL01-------------------------
  6843. INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - GET DISPLAY OUTPUT
  6844.     AX = 7F02h
  6845.     BL = 01h
  6846. Return: AL <> 7Fh if not supported
  6847.     AL = 7Fh if supported
  6848.         AH = status
  6849.         00h successful
  6850.             BX = display output setting (see #0139)
  6851.             CX = displays attached (see #0140)
  6852.         01h failed
  6853. SeeAlso: AX=7F00h"SOLLEX",AX=7F02h/BL=00h
  6854.  
  6855. Bitfields for SOLLEX SuperVGA displays attached:
  6856. Bit(s)    Description    (Table 0140)
  6857.  0    PS/2 display on analog output
  6858.  1    multi-frequency monitor on analog output
  6859.  2    LCD panel attached
  6860.  3    plasma/electroluminescent panel attached
  6861.  4    multi-frequency monitor on digital output
  6862.  5    Enhanced Color Display attached to digital outpt
  6863.  6    alternate display
  6864.  15-7    reserved
  6865. --------V-107F03BL00-------------------------
  6866. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GET SUPPORT INFO
  6867.     AX = 7F03h
  6868.     BL = 00h
  6869.     CX = support type
  6870.         0000h VGA, 0001h EGA, 0002h CGA, 0003h MDA, 0004h extensions,
  6871.         0005h-0012h reserved for SOLLEX, 0013h Hercules,
  6872.         0014h-001Fh reserved for SOLLEX, 0020h-00FFh reserved for OEM
  6873. Return: AL <> 7Fh if not supported
  6874.     AL = 7Fh if supported
  6875.         AH = status
  6876.         00h successful
  6877.             CX = size of video support code
  6878.             DX = segment of physical video support (0000h if no ROM)
  6879.             ES = segment of active video support
  6880.             ES:DI -> information block (DI = 0000h if none available)
  6881.         01h failed
  6882. SeeAlso: AX=7F03h/BL=01h
  6883. --------V-107F03BL01-------------------------
  6884. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - INITIALIZE VIDEO SUPPORT
  6885.     AX = 7F03h
  6886.     BL = 01h
  6887.     CX = support request
  6888.     ES = segment of support code
  6889. Return: AL <> 7Fh if not supported
  6890.     AL = 7Fh if supported
  6891.         AH = status
  6892.         00h successful
  6893.         01h failed
  6894. Note:    initializes the indicated video support by calling ES:0003h; this
  6895.       function may be used to switch the active video support back to
  6896.       ROM after AX=7F03h/BL=02h
  6897. SeeAlso: AX=7F03h/BL=00h
  6898. --------V-107F03BL02-------------------------
  6899. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GO RAM RESIDENT
  6900.     AX = 7F03h
  6901.     BL = 02h
  6902.     CX = support request
  6903.     ES = destination segment
  6904. Return: AL <> 7Fh if not supported
  6905.     AL = 7Fh if supported
  6906.         AH = status
  6907.         00h successful
  6908.         01h failed
  6909. SeeAlso: AX=7F00h"SOLLEX",AX=7F03h/BL=01h
  6910. --------V-107F04BL00-------------------------
  6911. INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET POWER STATE
  6912.     AX = 7F04h
  6913.     BL = 00h
  6914.     CX = new power state
  6915. Return: AL <> 7Fh if not supported
  6916.     AL = 7Fh if supported
  6917.         AH = status
  6918.         00h successful
  6919.         01h failed
  6920. Note:    higher values progressively reduce the operations available on the
  6921.       video adapter while yielding increasing power savings
  6922. SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=01h
  6923. --------V-107F04BL01-------------------------
  6924. INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET POWER STATE
  6925.     AX = 7F04h
  6926.     BL = 01h
  6927. Return: AL <> 7Fh if not supported
  6928.     AL = 7Fh if supported
  6929.         AH = status
  6930.         00h successful
  6931.             CX = current power state
  6932.             DX = maximum state
  6933.         01h failed
  6934. SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=00h
  6935. --------V-107F04BL02-------------------------
  6936. INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET TIMEOUT RESET
  6937.     AX = 7F04h
  6938.     BL = 02h
  6939.     CX = timeout reset
  6940. Return: AL <> 7Fh if not supported
  6941.     AL = 7Fh if supported
  6942.         AH = status
  6943.         00h successful
  6944.         01h failed
  6945. SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=03h
  6946. --------V-107F04BL03-------------------------
  6947. INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET TIMEOUT RESET
  6948.     AX = 7F04h
  6949.     BL = 03h
  6950. Return: AL <> 7Fh if not supported
  6951.     AL = 7Fh if supported
  6952.         AH = status
  6953.         00h successful
  6954.             BX = time increment
  6955.             CX = current timeout reset
  6956.             DX = maximum timeout reset
  6957.             ES:DI -> timeout reset table (array of bytes)
  6958.         01h failed
  6959. Note:    the timeout period is computed as (BYTE ES:[DI+CX]) * BX timer ticks
  6960. SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=02h
  6961. --------V-107F05-----------------------------
  6962. INT 10 - SOLLEX SuperVGA - LOAD REGISTER
  6963.     AX = 7F05h
  6964.     ES:DI -> register value table (see #0141)
  6965. Return: AL <> 7Fh if not supported
  6966.     AL = 7Fh if supported
  6967.         AH = status
  6968.         00h successful
  6969.         01h failed
  6970. SeeAlso: AH=F1h,AH=F3h,AH=F5h
  6971.  
  6972. Format of SOLLEX SuperVGA register value table:
  6973. Offset    Size    Description    (Table 0141)
  6974.  00h    WORD    base I/O register (FFFFh = end of list)
  6975.  02h 2N BYTEs    pairs of values to be written to the base I/O register as an
  6976.           index value and the following register as a data byte
  6977.  2N+2    WORD    FFFFh (end of data list)
  6978.     ... (repeats until FFFFh base address)
  6979. --------V-107F06-----------------------------
  6980. INT 10 - SOLLEX SuperVGA - MULTIPLE FONT CONTROL
  6981.     AX = 7F06h
  6982.     BL = subfunction
  6983.         00h set multiple font state
  6984.         CX = new state (00h off, 01h on)
  6985.         01h get multiple font state
  6986.         Return: BL = current state (00h off, 01h on)
  6987. Return: AL <> 7Fh if not supported
  6988.     AL = 7Fh if supported
  6989.         AH = status
  6990.         00h successful
  6991.         01h failed
  6992. SeeAlso: AX=1100h,AX=1103h
  6993. --------V-107F07-----------------------------
  6994. INT 10 - SOLLEX SuperVGA - FILL VIDEO RAM
  6995.     AX = 7F07h
  6996.     BL = how much to fill
  6997.        00h regen size
  6998.        01h all video memory
  6999.     CX = pattern to write (normally 0720h for text modes and 0000h for gr)
  7000. Return: AL <> 7Fh if not supported
  7001.     AL = 7Fh if supported
  7002.         AH = status
  7003.         00h successful
  7004.         01h failed
  7005. SeeAlso: AH=06h
  7006. --------A-1080-------------------------------
  7007. INT 10 - CU Writer v1.4 - GET OPTION
  7008.     AH = 80h
  7009.     AL = desired option
  7010. Return: ???
  7011. Program: CU Writer is a public-domain Thai-English word processor from
  7012.       Chulalongkorn University, Bangkok
  7013. SeeAlso: AH=81h"CU Writer"
  7014. --------Q-1080--DX4456-----------------------
  7015. INT 10 U - VIDEO - DESQview 2.0x only - internal - SET ??? HANDLER
  7016.     AH = 80h
  7017.     DX = 4456h ('DV')
  7018.     ES:DI -> FAR subroutine to be called on ???
  7019. Return: DS = segment of DESQview data structure for video buffer
  7020. Note:    this function is probably meant for internal use only, due to the magic
  7021.       value required in DX
  7022.     the subroutine seems to be called when the DESQview menu is accessed;
  7023.       on entry, AL = 03h or 04h
  7024. --------A-1081-------------------------------
  7025. INT 10 - CU Writer v1.4 - SET OPTION
  7026.     AH = 81h
  7027.     ???
  7028. Return: ???
  7029. SeeAlso: AH=80h"CU Writer"
  7030. --------Q-1081--DX4456-----------------------
  7031. INT 10 U - VIDEO - DESQview 2.0x only - internal - GET ???
  7032.     AH = 81h
  7033.     DX = 4456h ('DV')
  7034. Return: ES = segment of DESQview data structure for video buffer
  7035.         BYTE ES:[0] = current window number in DV 2.0x
  7036. Note:    this function is probably meant for internal use only, due to the magic
  7037.       value required in DX
  7038. SeeAlso: AH=82h"DESQview"
  7039. --------Q-1082--DX4456-----------------------
  7040. INT 10 U - VIDEO - DESQview 2.0x only - internal - GET CURRENT WINDOW INFO
  7041.     AH = 82h
  7042.     DX = 4456h ('DV')
  7043. Return: DS = segment in DESQview for data structure
  7044.          in DV 2.00,
  7045.           BYTE DS:[0] = window number
  7046.           WORD DS:[1] = segment of other data structure
  7047.           WORD DS:[3] = segment of window's object handle
  7048.     ES = segment of DESQview data structure for video buffer
  7049.     AL = current window number
  7050.     AH = ???
  7051.     BL = direct screen writes
  7052.         00h program does not do direct writes
  7053.         01h program does direct writes, so shadow buffer not usable
  7054.     BH = ???
  7055.     CL = current video mode
  7056.     CH = ???
  7057. Note:    this function is probably meant for internal use only, due to the magic
  7058.       value required in DX
  7059. SeeAlso: AH=81h"DESQview"
  7060. --------J-108200-----------------------------
  7061. INT 10 - VIDEO - AX PC - GET/SET SCROLL MODE
  7062.     AX = 8200h
  7063.     BL = new scroll mode or FFh to get current mode
  7064.         00h dynamic, 01h software
  7065. Return: AL = scroll mode (current mode if BL=FFh, previous mode otherwise)
  7066. SeeAlso: AH=06h,AH=07h
  7067. --------J-108300-----------------------------
  7068. INT 10 - VIDEO - AX PC - GET VIDEO RAM ADDRESS
  7069.     AX = 8300h
  7070. Return: AX = offset of video RAM
  7071.     ES:BX -> virtual text RAM buffer
  7072. SeeAlso: AX=5201h
  7073. ----------1086-------------------------------
  7074. INT 10 - ???
  7075.     AH = 86h
  7076. Note:    called by Diamond Stealth64 Video STLTH64.VXD
  7077. SeeAlso: INT 2F/AX=4021h
  7078. --------N-108B-------------------------------
  7079. INT 10 - Alloy MW386 - FORCE WORKSTATION SCREEN UPDATE
  7080.     AH = 8Bh
  7081. Return: nothing
  7082. SeeAlso: AH=92h,AH=93h
  7083. --------N-1090-------------------------------
  7084. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION DISPLAY MODE
  7085.     AH = 90h
  7086. Return: AL = current video mode (see #0009 at AH=00h)
  7087. SeeAlso: AH=91h
  7088. --------N-1091-------------------------------
  7089. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION ADAPTER TYPE
  7090.     AH = 91h
  7091. Return: AL = video adapter type (see #0142)
  7092. Note:    types less than 80h do not imply that the current user is on the host
  7093. SeeAlso: AH=90h
  7094.  
  7095. (Table 0142)
  7096. Values for Alloy MW386 video adapter type:
  7097.  00h    monochrome
  7098.  01h    Hercules monochrome graphics
  7099.  02h    CGA
  7100.  03h    EGA
  7101.  04h    VGA
  7102.  80h    monochrome text terminal
  7103.  81h    Hercules graphics terminal
  7104.  82h    color graphics terminal
  7105. --------N-1092-------------------------------
  7106. INT 10 - Alloy MW386 - INHIBIT WORKSTATION SCREEN UPDATES
  7107.     AH = 92h
  7108. Return: nothing
  7109. Note:    the terminal will be updated even when screen updates are inhibited if
  7110.       TTY output is used
  7111. SeeAlso: AH=8Bh
  7112. --------N-1093-------------------------------
  7113. INT 10 - Alloy MW386 - REDRAW SCREEN
  7114.     AH = 93h
  7115. Return: nothing
  7116. SeeAlso: AH=8Bh,AH=FFh
  7117. --------A-10A0-------------------------------
  7118. INT 10 - CU Writer v1.4 - SET PIXEL WRITE MODE
  7119.     AH = A0h
  7120.     ???
  7121. Return: ???
  7122. Program: CU Writer is a public-domain Thai-English word processor from
  7123.       Chulalongkorn University, Bangkok
  7124. SeeAlso: AH=80h"CU Writer",AH=B0h
  7125. --------p-10A000-----------------------------
  7126. INT 10 - ATI Mach64 BIOS - ???
  7127.     AX = A000h
  7128.     CL = ??? (bits 2-0 may not be 000)
  7129.     CH = ??? (81h or ???)
  7130.     DX = segment of ??? (if CH=81h)
  7131.     ???
  7132. Return: AX = ???
  7133. SeeAlso: AX=4F10h/BL=00h,AX=A001h
  7134. ----------10A001-----------------------------
  7135. INT 10 - ATI Mach64 BIOS - ???
  7136.     AX = A001h
  7137.     CL = ??? flags
  7138.     ???
  7139. Return: AH = status
  7140.         00h successful
  7141.         01h failed
  7142.     ???
  7143. SeeAlso: AX=A000h,AX=A002h
  7144. ----------10A002-----------------------------
  7145. INT 10 - ATI Mach64 BIOS - ???
  7146.     AX = A002h
  7147.     CL = ??? (bits 2-0 may not be 000)
  7148.     CH = ??? (81h or ???)
  7149.     DX = segment of ??? (if CH=81h)
  7150.     ???
  7151. Return: AH = status
  7152.         00h successful
  7153.         01h failed
  7154.     ???
  7155. Note:    executes AX=A000h, then AX=A001h if A000h was successful
  7156. SeeAlso: AX=A000h,AX=A001h
  7157. ----------10A003-----------------------------
  7158. INT 10 - ATI Mach64 BIOS - ???
  7159.     AX = A003h
  7160.     BX = ???
  7161.     ???
  7162. Return: AH = status (00h successful)
  7163.     ???
  7164. SeeAlso: AX=A000h,AX=A002h
  7165. --------V-10A004-----------------------------
  7166. INT 10 - PhoenixVIEW/LC - VIDEO DISPLAY TYPE
  7167.     AX = A004h
  7168.     ???
  7169. Return: ???
  7170. Desc:    configure display parameters
  7171. SeeAlso: AX=A01Bh"PhoenixVIEW/LC"
  7172. ----------10A004-----------------------------
  7173. INT 10 - ATI Mach64 BIOS - ???
  7174.     AX = A004h
  7175.     BX = video mode??? (0000-00FFh)
  7176.     DX = ??? (sent to some port [66ECh???] one bit at a time, high to low)
  7177.     ???
  7178. Return: AH = status
  7179.         00h successful
  7180.         01h failed
  7181.     ???
  7182. SeeAlso: AX=A000h,AX=A002h
  7183. ----------10A005-----------------------------
  7184. INT 10 - ATI Mach64 BIOS - ???
  7185.     AX = A005h
  7186.     CL = ??? flags (bits 0,2, others?)
  7187.     ???
  7188. Return: AH = status
  7189.         00h successful
  7190.         01h failed
  7191.     ???
  7192. SeeAlso: AX=A000h,AX=A002h
  7193. ----------10A006-----------------------------
  7194. INT 10 - ATI Mach64 BIOS - ???
  7195.     AX = A006h
  7196.     ???
  7197. Return: AH = status
  7198.         00h successful
  7199.         01h failed
  7200.     ???
  7201. SeeAlso: AX=A000h,AX=A002h
  7202. ----------10A007-----------------------------
  7203. INT 10 - ATI Mach64 BIOS - GET ???
  7204.     AX = A007h
  7205. Return: AH = 00h (successful)
  7206.     AL = ??? (00h)
  7207.     BX = ??? (15A0h in examined BIOS)
  7208.     DX = segment of BIOS
  7209. SeeAlso: AX=A000h,AX=A002h
  7210. ----------10A008-----------------------------
  7211. INT 10 - ATI Mach64 BIOS - GET ??? SIZE
  7212.     AX = A008h
  7213.     CL = ??? flags
  7214.     ???
  7215. Return: AH = 00h (successful)
  7216.     BX = size of ??? (0046h if CL bit 0 clear on entry)
  7217. SeeAlso: AX=A000h,AX=A009h
  7218. ----------10A009-----------------------------
  7219. INT 10 - ATI Mach64 BIOS - GET ???
  7220.     AX = A009h
  7221.     DX:BX -> buffer for ???
  7222.     CL = ??? flags
  7223.     ???
  7224. Return: AH = status
  7225.         00h successful
  7226.         DX:BX buffer filled
  7227.         01h failed
  7228.     ???
  7229. SeeAlso: AX=A000h,AX=A008h
  7230. ----------10A00A-----------------------------
  7231. INT 10 - ATI Mach64 BIOS - GET ???
  7232.     AX = A00Ah
  7233. Return: AH = 00h (successful)
  7234.     AL = ??? (01h)
  7235.     BX = ??? (5938h)
  7236.     CX = ??? (595Eh)
  7237.     DX = segment of BIOS
  7238. SeeAlso: AX=A000h,AX=A002h
  7239. ----------10A00B-----------------------------
  7240. INT 10 - ATI Mach64 BIOS - ???
  7241.     AX = A00Bh
  7242.     BX = ???
  7243.     CL = ??? flags
  7244.     ???
  7245. Return: AH = status
  7246.         00h successful
  7247.         01h failed
  7248.     ???
  7249. SeeAlso: AX=A000h,AX=A002h
  7250. --------p-10A00C-----------------------------
  7251. INT 10 - ATI Mach64 BIOS - SET SLEEP MODE
  7252.     AX = A00Ch
  7253.     CL = new state
  7254.         00h normal operation
  7255.         01h standby
  7256.         02h suspend
  7257.         03h off
  7258. Return: AH = status
  7259.         00h successful
  7260.         01h failed
  7261. Note:    CL bit 2 affects values written to video card's ports
  7262. SeeAlso: AX=A000h,AX=A00Dh,AX=4F00h,AX=4F10h/BL=01h
  7263. ----------10A00D-----------------------------
  7264. INT 10 - ATI Mach64 BIOS - GET SLEEP MODE
  7265.     AX = A00Dh
  7266. Return: AH = 00h (successful)
  7267.     CL = current power mode
  7268.         00h normal operation
  7269.         01h standby
  7270.         02h suspend
  7271.         03h off
  7272. SeeAlso: AX=A00Ch,AX=4F10h/BL=02h
  7273. ----------10A00E-----------------------------
  7274. INT 10 - ATI Mach64 BIOS - SET ???
  7275.     AX = A00Eh
  7276.     CL = ??? (00h-03h)
  7277. Return: AH = status
  7278.         00h successful
  7279.         01h failed
  7280. Note:    CL zero/nonzero are treated differently
  7281. SeeAlso: AX=A000h,AX=A00Fh
  7282. ----------10A00F-----------------------------
  7283. INT 10 - ATI Mach64 BIOS - GET ???
  7284.     AX = A00Fh
  7285. Return: AH = 00h (successful)
  7286.     CL = ??? (00h-03h, read from PORT 42ECh)
  7287. SeeAlso: AX=A000h,AX=A00Eh
  7288. ----------10A010-----------------------------
  7289. INT 10 - ATI Mach64 BIOS - ???
  7290.     AX = A010h
  7291.     CL = ???  (80h/other)
  7292.     ???
  7293. Return: AH = status
  7294.         00h successful
  7295.         01h failed
  7296.     ???
  7297. SeeAlso: AX=A000h,AX=A002h
  7298. ----------10A011-----------------------------
  7299. INT 10 - ATI Mach64 BIOS - GET ???
  7300.     AX = A011h
  7301. Return: AH = 00h (successful)
  7302.     BL = ??? (1Fh)
  7303.     BH = ??? (0Fh)
  7304.     CL = ??? (00h)
  7305.     CH = ??? (0Fh)
  7306.     DX = ??? (00FFh)
  7307. SeeAlso: AX=A000h,AX=A010h
  7308. ----------10A012-----------------------------
  7309. INT 10 - ATI Mach64 BIOS - GET ???
  7310.     AX = A012h
  7311. Return: AH = 00h (successful)
  7312.     AL = ??? (00h)
  7313.     BX = ??? (0000h)
  7314.     CX = ??? (0000h)
  7315.     DX = ??? (02ECh)
  7316. SeeAlso: AX=A000h,AX=A002h
  7317. ----------10A013-----------------------------
  7318. INT 10 - ATI Mach64 BIOS - ???
  7319.     AX = A013h
  7320.     ???
  7321. Return: AH = status
  7322.         00h successful
  7323.         01h failed
  7324.     ???
  7325. Note:    not implemented in examined BIOS, always returns AH=01h
  7326. SeeAlso: AX=A000h,AX=A002h
  7327. --------V-10A01B-----------------------------
  7328. INT 10 - PhoenixVIEW/LC - CRT MONITOR DETECTION
  7329.     AX = A01Bh
  7330.     ???
  7331. Return: ???
  7332. Desc:    determine whether an external display is currently attached
  7333. SeeAlso: AX=A004h"PhoenixVIEW/LC"
  7334. --------U-10AA-------------------------------
  7335. INT 10 OU - Player's Tool 3.0 - UNINSTALL
  7336.     AH = AAh
  7337. Return: ???
  7338. Note:    this call has been removed in PT 3.996b
  7339. Program: Player's Tool is a game cheater by Dmitry Yakunin & Andy Robinson
  7340. SeeAlso: AH=ABh,INT 2F/AH=AAh
  7341. --------U-10AB-------------------------------
  7342. INT 10 OU - Player's Tool 3.0 - INSTALLATION CHECK
  7343.     AH = ABh
  7344. Return: BH = FFh
  7345.     ???
  7346. Note:    this call has been removed in PT 3.996b
  7347. SeeAlso: AH=AAh,INT 2F/AH=ABh
  7348. --------A-10B0-------------------------------
  7349. INT 10 - CU Writer v1.4 - PUT PIXEL
  7350.     AH = B0h
  7351.     ???
  7352. Return: ???
  7353. SeeAlso: AH=A0h"CU Writer",AH=B1h,AH=B2h,AH=B3h,AH=B4h,AH=B5h,AH=D0h
  7354. --------A-10B1-------------------------------
  7355. INT 10 - CU Writer v1.4 - MOVE TO
  7356.     AH = B1h
  7357.     ???
  7358. Return: ???
  7359. SeeAlso: AH=B0h,AH=B2h,AH=C0h"CU Writer"
  7360. --------A-10B2-------------------------------
  7361. INT 10 - CU Writer v1.4 - DRAW LINE TO
  7362.     AH = B2h
  7363.     ???
  7364. Return: ???
  7365. SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h,AH=B5h
  7366. --------A-10B3-------------------------------
  7367. INT 10 - CU Writer v1.4 - FLOOD FILL
  7368.     AH = B3h
  7369.     ???
  7370. Return: ???
  7371. SeeAlso: AH=B2h,AH=B5h
  7372. --------A-10B4-------------------------------
  7373. INT 10 - CU Writer v1.4 - DRAW RECTANGLE
  7374.     AH = B4h
  7375.     ???
  7376. Return: ???
  7377. SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B5h
  7378. --------A-10B5-------------------------------
  7379. INT 10 - CU Writer v1.4 - DRAW FILLED RECTANGLE
  7380.     AH = B5h
  7381.     ???
  7382. Return: ???
  7383. SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B4h
  7384. --------V-10BD44-----------------------------
  7385. INT 10 U - Compaq QVision - ???
  7386.     AX = BD44h
  7387.     ???
  7388. Return: ???
  7389. Note:    called by Compaq's MTX132.COM, which places the QVision in 132-column
  7390.       mode
  7391. --------V-10BF--CX0000-----------------------
  7392. INT 10 - Athena Digital HGCIBM.COM - INSTALLATION CHECK
  7393.     AH = BFh
  7394.     CX = 0000h (???)
  7395. Return: CX = 0202h
  7396.     DL = ??? (internal data, possibly version number)
  7397. --------b-10BF00-----------------------------
  7398. INT 10 - VIDEO - Compaq Extensions - SELECT EXTERNAL MONITOR
  7399.     AX = BF00h
  7400. Return: nothing
  7401. Desc:    specify that the external monitor become the active monitor
  7402. Note:    all registers preserved and the internal monitor is blanked
  7403. SeeAlso: AX=BF01h,AX=BF12h,AH=12h/BL=35h
  7404. --------b-10BF01-----------------------------
  7405. INT 10 - VIDEO - Compaq Extensions - SELECT INTERNAL MONITOR
  7406.     AX = BF01h
  7407. Return: nothing
  7408. Desc:    specify that the internal monitor become the active monitor
  7409. Note:    all registers preserved and the external monitor is blanked
  7410. SeeAlso: AX=BF00h,AX=BF12h,AH=12h/BL=35h
  7411. --------b-10BF02-----------------------------
  7412. INT 10 - VIDEO - Compaq Extensions - SET MASTER MODE OF CURRENT CONTROLLER
  7413.     AX = BF02h
  7414.     BH = master mode
  7415.         04h CGA
  7416.         05h EGA
  7417.         07h MDA
  7418. Return: nothing
  7419. SeeAlso: AX=BF03h
  7420. --------b-10BF03BX0000-----------------------
  7421. INT 10 - VIDEO - Compaq Extensions - GET ENVIRONMENT
  7422.     AX = BF03h
  7423.     BX = 0000h
  7424. Return: BH = active monitor
  7425.         (00h = external, 01h = internal, 03h both, 04h neither)
  7426.     BL = master mode (see #0143)
  7427.     CH = ASIC type and version
  7428.         00h (reserved, very early Compaq VGCs)
  7429.         31h if QVision VGA
  7430.     CL = switchable VDU modes supported (see #0144)
  7431.     DH = internal monitor type (see #0145)
  7432.     DL = external monitor type (see #0145)
  7433. SeeAlso: AX=1A00h,AX=BF00h,AX=BF01h,AX=BF02h,AX=BF11h
  7434.  
  7435. (Table 0143)
  7436. Values for Compaq video master mode:
  7437.  00h    switchable VDU not present
  7438.  04h    CGA
  7439.  05h    EGA
  7440.  07h    MDA
  7441.  08h    switchable LCD controller present
  7442.  09h    plasma VGA
  7443.  0Ah    TFT (active-matrix) VGA
  7444.  
  7445. Bitfields for Compaq switchable VDU modes support:
  7446. Bit(s)    Description    (Table 0144)
  7447.  0    CGA supported
  7448.  1,2    reserved (1)
  7449.  3    MDA supported
  7450.  4    BitBLT engine available
  7451.  5    132-column support availble
  7452.  6    640x480x256 mode available
  7453.  7    8-bit DAC mode available
  7454.  
  7455. (Table 0145)
  7456. Values for Compaq monitor type:
  7457.  00h    none
  7458.  01h    dual-mode monitor
  7459.  02h    5153 RGB monitor (RGBI 16-color)
  7460.  03h    Compaq Color monitor
  7461.  04h    640x400 flat panel (Plasma CGA)
  7462.  05h    VGC monochrome
  7463.  06h    VGC color
  7464.  07h    8-level mono LCD VGA (internal)
  7465.     1024x768 mono VGA (external)
  7466.  08h    16-level mono plasma VGA (internal)
  7467.     1024x768 color VGA (external)
  7468.  09h    4-level mono LCD CGA
  7469.  0Ah    16-level mono LCD VGA
  7470.  0Bh    active-matrix color VGA
  7471.  0Ch    active-matrix mono VGA
  7472.  0Dh    STN color VGA
  7473. --------b-10BF04-----------------------------
  7474. INT 10 - VIDEO - Compaq Extensions - SET MODE SWITCH DELAY
  7475.     AX = BF04h
  7476.     BH = new state of delay (00h enabled, 01h disabled)
  7477. Return: nothing
  7478. Note:    the 04/08/93 sytem ROM appears to use BL instead of BH; a future
  7479.       version of the list will provide more definite information
  7480. SeeAlso: AX=BF05h
  7481. --------b-10BF05-----------------------------
  7482. INT 10 - VIDEO - Compaq Extensions - ENABLE/DISABLE DISPLAY
  7483.     AX = BF05h
  7484.     BH = new state of video
  7485.         00h off
  7486.         01h on
  7487. Return: nothing
  7488. Note:    the 04/08/93 sytem ROM appears to use BL instead of BH; a future
  7489.       version of the list will provide more definite information
  7490. SeeAlso: AH=12h/BL=36h,AX=BF04h
  7491. --------b-10BF06-----------------------------
  7492. INT 10 - VIDEO - Compaq SLT/286 - READ GRAY SCALE TABLE
  7493.     AX = BF06h
  7494.     CL = address to be read from gray scale table
  7495. Return: AL = bit 3-0 - Value read from gray scale table
  7496.     CL = address to be read from gray scale table
  7497. SeeAlso: AH=12h/BL=33h,AX=BF07h
  7498. --------b-10BF07-----------------------------
  7499. INT 10 - VIDEO - Compaq SLT/286 - WRITE GRAY SCALE TABLE
  7500.     AX = BF07h
  7501.     CH = value to write to gray scale table
  7502.     CL = address to be written to gray scale table
  7503. Return: nothing
  7504. SeeAlso: AX=BF06h,AX=BF08h
  7505. --------b-10BF08-----------------------------
  7506. INT 10 - VIDEO - Compaq SLT/286 - WRITE COLOR MIX REGISTERS
  7507.     AX = BF08h
  7508.     CH = bits 7-4 green weight
  7509.          bits 3-0 blue weight
  7510.     CL = bits 7-4 unused
  7511.          bits 3-0 red weight
  7512. Return: nothing
  7513. SeeAlso: AH=12h/BL=33h,AX=BF07h
  7514. --------b-10BF09-----------------------------
  7515. INT 10 - VIDEO - Compaq Extensions - TURN ON REVERSE VIDEO
  7516.     AX = BF09h
  7517. Return: CF clear
  7518. Notes:    sets bit 6 of port 03CEh index 81h; in some cases also sets index 84h
  7519.       to 6Fh and index 83h to 04h
  7520.     supported by at least the QVision board and the LTE Lite ROM BIOS
  7521. SeeAlso: AX=BF0Ah,AX=BF0Bh
  7522. --------b-10BF0A-----------------------------
  7523. INT 10 - VIDEO - Compaq Extensions - TURN OFF REVERSE VIDEO
  7524.     AX = BF0Ah
  7525. Return: CF clear
  7526. Notes:    clears bit 6 of port 03CEh index 81h; in some cases also sets index 84h
  7527.       to 80h and index 83h to FBh
  7528.     supported by at least the QVision board and the LTE Lite ROM BIOS
  7529. SeeAlso: AX=BF09h,AX=BF0Bh
  7530. --------b-10BF0B-----------------------------
  7531. INT 10 - VIDEO - Compaq Extensions - CHECK WHETHER VIDEO REVERSED
  7532.     AX = BF0Bh
  7533. Return: CF clear
  7534.     AX = state (0000h normal video, 0001h reverse video)
  7535. Note:    supported by at least the QVision board and the LTE Lite ROM BIOS
  7536. SeeAlso: AX=BF09h,AX=BF0Ah
  7537. --------b-10BF0C-----------------------------
  7538. INT 10 - VIDEO - Compaq Extensions - SET DAC 6-BIT MODE
  7539.     AX = BF0Ch
  7540. Return: CF clear
  7541. Desc:    specify that video DAC registers use only six bits of color info
  7542. Note:    supported by at least the QVision board and the SystemPro XL ROM BIOS
  7543. SeeAlso: AX=BF0Dh,AX=BF0Eh
  7544. --------b-10BF0D-----------------------------
  7545. INT 10 - VIDEO - Compaq Extensions - SET DAC 8-BIT MODE
  7546.     AX = BF0Dh
  7547. Return: CF clear
  7548. Desc:    specify that video DAC registers use all eight bits of color info
  7549. Note:    supported by at least the QVision board and the SystemPro XL ROM BIOS
  7550. SeeAlso: AX=BF0Ch,AX=BF0Eh
  7551. --------b-10BF0E-----------------------------
  7552. INT 10 - VIDEO - Compaq Extensions - CHECK DAC 6-BIT/8-BIT mode
  7553.     AX = BF0Eh
  7554. Return: CF clear
  7555.     AL = DAC mode
  7556.         00h in 6-bit mode
  7557.         01h in 8-bit mode
  7558. Note:    supported by at least the QVision board and the SystemPro XL ROM BIOS
  7559. SeeAlso: AX=BF0Ch,AX=BF0Dh
  7560. --------b-10BF0F-----------------------------
  7561. INT 10 - VIDEO - Compaq Extensions - SET HIGH ADRESS MAP REGISTER
  7562.     AX = BF0Fh
  7563.     BX = high address map location in megabytes, or
  7564.         0000h to disable high address map, or
  7565.         FFFFh to let ROM configure high address map
  7566. Return: CF clear
  7567.     AX = previous value of high address map register
  7568. Notes:    supported by at least the QVision board and the SystemPro XL and LTE
  7569.       Lite ROM BIOSes
  7570. SeeAlso: AX=BF10h
  7571. --------b-10BF10-----------------------------
  7572. INT 10 - VIDEO - Compaq Extensions - GET HIGH ADDRESS MAP REGISTER
  7573.     AX = BF10h
  7574. Return: CF clear
  7575.     AX = current value of high address map register
  7576. Notes:    supported by at least the QVision board and the SystemPro XL and LTE
  7577.       Lite ROM BIOSes
  7578.     the Compaq QVision documentation (October 1993) says the value is
  7579.       returned in BX, but this appears to be one of many typos
  7580. SeeAlso: AX=BF0Fh
  7581. --------b-10BF11-----------------------------
  7582. INT 10 - VIDEO - Compaq Extensions - GET EXTENDED ENVIRONMENT
  7583.     AX = BF11h
  7584. Return: AL = BFh if supported
  7585.         CF clear
  7586.         ES:DI -> ASCII signature "COMPAQ"
  7587.         ES:SI -> advanced functionality table (see #0146)
  7588. Note:    supported by at least the QVision board and the LTE Lite and ProSignia
  7589.       ROM BIOSes
  7590. SeeAlso: AX=1A00h,AX=BF03h
  7591.  
  7592. Bitfields for Compaq advanced video functionality:
  7593. Bit(s)    Description    (Table 0146)
  7594.  31    future graphics extensions (reserved, set to 0)
  7595.  30-16    reserved
  7596.  15-12    available video memory in 256K blocks, less one (0000 = 256K, etc.)
  7597.  11-8    reserved
  7598.  7    QVision modes supported
  7599.  6    Advanced VGA modes supported
  7600.  5    Accelerated VGA modes supported
  7601.  4    standard VGA modes supported
  7602.  3-2    reserved
  7603.  1    132-column modes supported
  7604.  0    reserved
  7605. --------b-10BF12-----------------------------
  7606. INT 10 - VIDEO - Compaq Extensions - NEW ACTIVE MONITOR
  7607.     AX = BF12h
  7608.     BH reserved
  7609.     BL = function mask (see #0147)
  7610. Return: CF clear
  7611. Notes:    this function is a NOP if the VGA subsystem is inactive or the current
  7612.       Display Combination Code is 10h or higher
  7613.     supported by at least the QVision board and the LTE Lite and ProSignia
  7614.       ROM BIOSes
  7615. SeeAlso: AX=BF01h,AX=BF02h,#0657
  7616.  
  7617. Bitfields for function mask:
  7618. Bit(s)    Description    (Table 0147)
  7619.  7    command mode
  7620.     if set, bits 1 and 0 make the monitor active when set
  7621.     if clear, bits 1 and 0 toggle the monitor's state when set
  7622.  6-2    reserved
  7623.  1    internal monitor
  7624.  0    external monitor
  7625. --------b-10BF13-----------------------------
  7626. INT 10 - VIDEO - Compaq QVision - GAMMA CORRECTION
  7627.     AX = BF13h
  7628.     BL = subfunction
  7629.         00h load gamma correction table for true-color mode
  7630.         DS = BIOS data segment
  7631.         01h set palette RAM bypass
  7632.     BH = 00h
  7633. Return: nothing
  7634. Note:    these functions must be called after a video mode set, and are in
  7635.       effect only for the current video mode
  7636. SeeAlso: #0657
  7637. --------V-10BFA0BXADAD-----------------------
  7638. INT 10 - VIDEO - Compaq ADAPT.COM - INSTALLATION CHECK
  7639.     AX = BFA0h
  7640.     BX = ADADh
  7641. Return: AX = BDBDh if newer ADAPT.COM installed
  7642.         BX = BCD version (BH = major, BL = minor)
  7643.         CL = ???
  7644.         CH = ???
  7645.         DL = ???
  7646.     AX = ADADh if older version of ADAPT.COM installed
  7647. Program: ADAPT is Compaq's Advanced Display Attribute Programming Tool, an
  7648.       optionally-resident utility for setting display colors and cursor
  7649.       size; when resident, it also includes a screen blanker
  7650. SeeAlso: AX=BFA1h,AX=BFA2h,AX=DFA5h
  7651. Index:    screen saver;ADAPT
  7652. --------V-10BFA1-----------------------------
  7653. INT 10 - VIDEO - Compaq ADAPT.COM - GET ???
  7654.     AX = BFA1h
  7655. Return: AX = BDBEh if supported
  7656.         CH = current value of ???
  7657.         DL = current value of ???
  7658. SeeAlso: AX=BFA0h,AX=BFA2h
  7659. --------V-10BFA2-----------------------------
  7660. INT 10 - VIDEO - Compaq ADAPT.COM - SET ???
  7661.     AX = BFA2h
  7662.     CH = new value for ???
  7663.     DL = new value for ???
  7664. Return: AX = BDBEh if supported
  7665. SeeAlso: AX=BFA0h,AX=BFA1h
  7666. --------A-10C0-------------------------------
  7667. INT 10 - CU Writer v1.4 - GO TO TEXT ROW AND COLUMN
  7668.     AH = C0h
  7669.     ???
  7670. Return: ???
  7671. SeeAlso: AH=B1h,AH=C1h,AH=C2h,AH=C3h,AH=C4h
  7672. --------V-10C000-----------------------------
  7673. INT 10 - S3 SpeedUp v3.00+ - INSTALLATION CHECK
  7674.     AX = C000h
  7675. Return: AX = FFFFh if installed
  7676.         DX = version number (binary, DH=major, DL=minor)
  7677.         BX = resident code segment
  7678. Program: S3SPDUP is a freeware TSR by Dietmar Meschede to improve the speed
  7679.       of chained video modes (both VESA and VGA Mode 13) on S3-chipset
  7680.       video cards
  7681. SeeAlso: AX=C001h,AX=C002h,AX=C003h,AX=D000h"S3VBE"
  7682. --------V-10C001-----------------------------
  7683. INT 10 - S3 SpeedUp v3.00+ - GET ACTIVE OPTIONS
  7684.     AX = C001h
  7685. Return: AX = FFFFh if function supported
  7686.         BX = currently active options (see #0148)
  7687. SeeAlso: AX=C000h,AX=C002h,AX=C003h
  7688.  
  7689. Bitfields for S3SpeedUp options:
  7690. Bit(s)    Description    (Table 0148)
  7691.  0    speed up banked VESA modes
  7692.  1    speed up 320x200 VGA mode 13
  7693. SeeAlso: #0154
  7694. --------V-10C002-----------------------------
  7695. INT 10 - S3 SpeedUp v3.00+ - SET ACTIVE OPTIONS
  7696.     AX = C002h
  7697.     BX = new value for active options (see #0148)
  7698. Return: AX = FFFFh if function supported
  7699. SeeAlso: AX=C000h,AX=C001h,AX=C003h,AX=D003h"S3VBE"
  7700. --------V-10C003-----------------------------
  7701. INT 10 - S3 SpeedUp v3.10+ - GET FLAGS
  7702.     AX = C003h
  7703. Return: AX = FFFFh if function supported
  7704.         BX = flags
  7705.         bit 0: SpeedUp is active
  7706.         bit 1: Windows run after SpeedUp
  7707. SeeAlso: AX=C000h,AX=C001h,AX=C002h,AX=D005h"S3VBE"
  7708. --------V-10C004-----------------------------
  7709. INT 10 - S3 SpeedUp v3.10+ - RESERVED FUNCTIONS
  7710.     AX = C004h-C0FFh
  7711. Return: AX = 5555h
  7712. SeeAlso: AX=C000h
  7713. --------A-10C1-------------------------------
  7714. INT 10 - CU Writer v1.4 - OUTPUT TEXT
  7715.     AH = C1h
  7716.     ???
  7717. Return: ???
  7718. SeeAlso: AH=C0h,AH=C2h,AH=C3h,AH=C4h
  7719. --------A-10C2-------------------------------
  7720. INT 10 - CU Writer v1.4 - REVERSE TEXT
  7721.     AH = C2h
  7722.     ???
  7723. Return: ???
  7724. SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=C4h
  7725. --------A-10C3-------------------------------
  7726. INT 10 - CU Writer v1.4 - TEXT BAR
  7727.     AH = C3h
  7728.     ???
  7729. Return: ???
  7730. SeeAlso: AH=C0h,AH=C1h,AH=C4h
  7731. --------A-10C4-------------------------------
  7732. INT 10 - CU Writer v1.4 - TEXT MENU
  7733.     AH = C4h
  7734.     ???
  7735. Return: ???
  7736. SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=D0h
  7737. --------V-10CB00-----------------------------
  7738. INT 10 - UNCHAIN - SAVE CURRENT VGA REGISTERS
  7739.     AX = CB00h
  7740. Note:    combined with AX=CB06h, this function permits the use of video mode
  7741.       13h together with the VGA's unchained mode
  7742. SeeAlso: AX=CB06h,AX=CBFFh
  7743. --------V-10CB01-----------------------------
  7744. INT 10 - UNCHAIN - UPDATE PAGE 1 OFFSET
  7745.     AX = CB01h
  7746.     BX = offset of page 1
  7747. Return: nothing
  7748. Desc:    inform UNCHAIN of the location of video page 1 in video memory; the
  7749.       default is 0000h
  7750. SeeAlso: AX=CB02h,AX=CB03h,AX=CB04h,AX=CBFFh
  7751. --------V-10CB02-----------------------------
  7752. INT 10 - UNCHAIN - UPDATE PAGE 2 OFFSET
  7753.     AX = CB02h
  7754.     BX = offset of page 2
  7755. Return: nothing
  7756. Desc:    inform UNCHAIN of the location of video page 2 in video memory; the
  7757.       default is 3E80h (16000, for 320x200)
  7758. SeeAlso: AX=CB00h,AX=CB01h,AX=CB03h,AX=CB04h
  7759. --------V-10CB03-----------------------------
  7760. INT 10 - UNCHAIN - UPDATE PAGE 3 OFFSET
  7761.     AX = CB03h
  7762.     BX = offset of page 3
  7763. Return: nothing
  7764. Desc:    inform UNCHAIN of the location of video page 3 in video memory; the
  7765.       default is 7D00h (32000, for 320x200)
  7766. SeeAlso: AX=CB01h,AX=CB02h,AX=CB04h
  7767. --------V-10CB04-----------------------------
  7768. INT 10 - UNCHAIN - UPDATE PAGE 4 OFFSET
  7769.     AX = CB04h
  7770.     BX = offset of page 4
  7771. Return: nothing
  7772. Desc:    inform UNCHAIN of the location of video page 4 in video memory; the
  7773.       default is BB80h (48000, for 320x200)
  7774. SeeAlso: AX=CB01h,AX=CB02h,AX=CB03h,AX=CB05h
  7775. --------V-10CB05-----------------------------
  7776. INT 10 - UNCHAIN - SAVE PALETTE
  7777.     AX = CB05h
  7778. Return: nothing
  7779. SeeAlso: AX=CB00h,AX=CB06h
  7780. --------V-10CB06-----------------------------
  7781. INT 10 - UNCHAIN - RESTORE VGA REGISTERS
  7782.     AX = CB06h
  7783. Return: nothing
  7784. SeeAlso: AX=CB00h,AX=CB05h,AX=CBFFh
  7785. --------V-10CBFF-----------------------------
  7786. INT 10 - UNCHAIN - INSTALLATION CHECK
  7787.     AX = CBFFh
  7788. Return: AX = CCBBh if installed
  7789. Program: UNCHAIN is a TSR by Colin Buckley which permits use of Borland
  7790.       development tools with Mode X video in the absence of a second
  7791.       monitor
  7792. SeeAlso: AX=CB00h,AX=CB01h,AX=CB06h
  7793. --------V-10CC00-----------------------------
  7794. INT 10 - VIDEO - UltraVision - GET STATUS (INSTALLATION CHECK)
  7795.     AX = CC00h
  7796.     SI = magic value 0000h (if checking version)
  7797. Return: CX = product signature
  7798.         ABCDh UltraVision
  7799.         5546h ('UF') UltraFont
  7800.     AL = Ultravision extensions
  7801.         00h enabled
  7802.         FFh disabled
  7803.     AH = card designator
  7804.     BX:00F0h -> palette values (for compatibility with NEWFONT)
  7805.     DX = support for high resolution modes
  7806.         00h not active
  7807.         01h active
  7808.     SI = UltraVision version number (v1.2+), high byte=major,low byte=minor
  7809.         unchanged for versions <1.2
  7810. Note:    UltraFont is a simplified version of UltraVision for Toshiba;
  7811.       only the signature in CX and the status in AL will be returned
  7812. SeeAlso: AX=CC01h,AX=CC02h
  7813. --------V-10CC01-----------------------------
  7814. INT 10 - VIDEO - UltraVision - DISABLE EXTENSIONS
  7815.     AX = CC01h
  7816. Return: nothing
  7817. Notes:    subsequent BIOS calls will be passed through to previous handler
  7818.     should be followed immediately by mode set to restore normal EGA/VGA
  7819.       state
  7820. SeeAlso: AX=CC02h
  7821. --------V-10CC02-----------------------------
  7822. INT 10 - VIDEO - UltraVision - ENABLE EXTENSIONS
  7823.     AX = CC02h
  7824. Return: nothing
  7825. Note:    should be followed immediately by mode set to restore previous
  7826.       UltraVision state
  7827. SeeAlso: AX=CC01h
  7828. --------U-10CCAB-----------------------------
  7829. INT 10 - HiFont - INSTALLATION CHECK
  7830.     AX = CCABh
  7831. Return: AX = ABCCh
  7832. Program: HiFont is a 8x19 font driver for standard VGA by Solar Designer
  7833. --------V-10CD00-----------------------------
  7834. INT 10 - VIDEO - UltraVision - LOAD ULTRAVISION PALETTE (color EGA,VGA)
  7835.     AX = CD00h
  7836.     CL = palette table number (01h-07h for v1.x, 01h-0Fh for v2+)
  7837.     DS:DX -> 16-byte palette register list (colors for registers 00h-0Fh)
  7838. Return: nothing
  7839. Notes:    if palette locking is in effect for the current mode, the new colors
  7840.       will be displayed immediately; otherwise, the system reverts to the
  7841.       default palette
  7842.     palette table 0 is reserved for the default palette and cannot be set
  7843.     UltraVision always sets the border color to black
  7844. SeeAlso: AX=CD01h,AX=CD02h
  7845. --------V-10CD01-----------------------------
  7846. INT 10 - VIDEO - UltraVision - SET PALETTE LOCKING STATUS (color EGA,VGA)
  7847.     AX = CD01h
  7848.     CL = palette locking value
  7849.         00h none
  7850.         01h text modes only (02h,03h)
  7851.         FFh all modes (all standard color text and graphics modes)
  7852. Return: nothing
  7853. Notes:    intended for video modes with 16 or fewer colors
  7854. SeeAlso: AX=1000h,AX=1002h,AX=CD00h,AX=CD03h
  7855. --------V-10CD02-----------------------------
  7856. INT 10 - VIDEO - UltraVision - GET ULTRAVISION PALETTE (EGA,VGA)
  7857.     AX = CD02h
  7858. Return: CL = palette table number
  7859.     DS:DX -> 17-byte palette register list (see #0149)
  7860.     DS:SI -> current font names table (see #0150,#0151)
  7861. Note:    only the font names are valid on monochrome EGA systems
  7862. SeeAlso: AX=1009h,AX=CD00h
  7863.  
  7864. Format of UltraVision palette register list:
  7865. Offset    Size    Description    (Table 0149)
  7866.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  7867.  10h    BYTE    border color
  7868.  
  7869. Format of UltraVision v2+ current font names table:
  7870. Offset    Size    standard EGA    HiRes EGA    VGA    (Table 0150)
  7871.  00h  8 BYTEs    N/A        F19 font    F20 font
  7872.  08h  8 BYTEs    F14 font    F14 font    F14 font
  7873.  10h  8 BYTEs    N/A        F11 font    F10 font
  7874.  18h  8 BYTEs    F8 font        F8 font        F8 font
  7875.  
  7876. Format of UltraVision v1.x current font names table:
  7877. Offset    Size    HiRes EGA    (Table 0151)
  7878.  00h  8 BYTEs    F19/F14 font
  7879.  08h  8 BYTEs    F11/F8 font
  7880. --------V-10CD03-----------------------------
  7881. INT 10 - VIDEO - UltraVision - GET PALETTE LOCKING STATUS (color EGA,VGA)
  7882.     AX = CD03h
  7883. Return: CL = palette locking value
  7884.         00h none
  7885.         01h text modes only
  7886.         FFh all modes
  7887. SeeAlso: AX=CD01h
  7888. --------V-10CD04-----------------------------
  7889. INT 10 - VIDEO - UltraVision - GET UltraVision TEXT MODE (EGA,VGA)
  7890.     AX = CD04h
  7891. Return: AL = mode number (see #0152)
  7892. SeeAlso: AH=0Fh,AX=CC00h,AH=CDh
  7893.  
  7894. (Table 0152)
  7895. Values for UltraVision video mode number:
  7896.  11h    80x25
  7897.  12h    80x43, 80x50
  7898.  13h    80x34, 80x36
  7899.  14h    80x60, 80x63
  7900.  19h    94x25
  7901.  1Ah    94x43, 94x50
  7902.  1Bh    94x36
  7903.  1Ch    94x63
  7904.  21h    108x25
  7905.  22h    108x43, 108x50
  7906.  23h    107x34, 108x36
  7907.  24h    108x60, 108x63
  7908.  31h    120x25
  7909.  32h    120x43, 120x50
  7910.  33h    132x25
  7911.  34h    132x44, 132x50
  7912.  39h    120x36
  7913.  3Ah    120x63
  7914.  3Bh    132x36
  7915.  3Ch    132x60
  7916. Index:    video modes;UltraVision
  7917. --------V-10CD05-----------------------------
  7918. INT 10 - VIDEO - UltraVision - SET CURSOR TYPE (EGA,VGA)
  7919.     AX = CD05h
  7920.     CL = type
  7921.         00h line cursor
  7922.         FFh box cursor
  7923. Return: nothing
  7924. Note:    sets default cursor type for text-based programs
  7925. SeeAlso: AH=01h,AX=CD06h
  7926. --------V-10CD06-----------------------------
  7927. INT 10 - VIDEO - UltraVision - GET CURSOR TYPE (EGA,VGA)
  7928.     AX = CD06h
  7929. Return: CL = type
  7930.         00h line cursor
  7931.         FFh box cursor
  7932. SeeAlso: AH=03h,AX=CD05h
  7933. --------V-10CD07-----------------------------
  7934. INT 10 - VIDEO - UltraVision v1.2+ - SET UNDERLINE STATUS (EGA,VGA)
  7935.     AX = CD07h
  7936.     CL = hardware underline status (see #0153)
  7937.     BL = foreground color for normal text (FFh = current)
  7938.     BH = foreground color for bright text (FFh = current)
  7939. Return: CL = hardware underline status
  7940.     BL = current foreground color for normal text
  7941.     BH = current foreground color for bright text
  7942. Notes:    when underline or strikeout is enabled in color text modes, the
  7943.       specified colors will be assigned temporarily to colors 01h and 09h,
  7944.       allowing affected text to match non-underlined text.    The color
  7945.       remapping uses values from the current onscreen palette regardless
  7946.       of the palette locking status (see AX=CD01h)
  7947.     specify the standard colors (BL=01h,BH=09h) to enable underline or
  7948.       strikeout without color remapping
  7949. SeeAlso: AX=CD08h
  7950.  
  7951. (Table 0153)
  7952. Values for hardware underline status:
  7953.  00h    off (color systems only)
  7954.  01h    underline below characters
  7955.  02h    strike through characters
  7956. --------V-10CD08-----------------------------
  7957. INT 10 - VIDEO - UltraVision v1.2+ - GET UNDERLINE STATUS (EGA,VGA)
  7958.     AX = CD08h
  7959. Return: CL = hardware underline status (see #0153)
  7960.     BL = foreground color for normal text
  7961.     BH = foreground color for bright text
  7962. Note:    only CL is valid on monochrome EGA systems
  7963. SeeAlso: AX=CD07h
  7964. --------V-10CD10-----------------------------
  7965. INT 10 - VIDEO - UltraVision - LOAD USER FONT (EGA,VGA)
  7966.     AX = CD10h
  7967.     BH = bytes per character (08h,0Ah,0Bh,0Eh,13h,14h)
  7968.     CX = ABCDh load 9xN alternate font (v2+)
  7969.        else number of characters to load
  7970.         DX = character offset into font table
  7971.         DS:SI -> 8-byte ASCII font name
  7972.     ES:BP -> font definitions
  7973. Return: AX = FFFFh if invalid font parameters
  7974. Notes:    loads the designated characters into UltraVision's resident font area
  7975.     should be followed by a video mode set to reload character generator
  7976. SeeAlso: AX=1100h,AX=1103h
  7977. --------V-10CD-------------------------------
  7978. INT 10 - VIDEO - UltraVision - SET ULTRAVISION TEXT MODE (EGA,VGA)
  7979.     AH = CDh
  7980.     AL = text mode number (see #0152)
  7981. Return: AX = CDCDh if invalid mode
  7982. SeeAlso: AX=CD04h
  7983. --------A-10D0-------------------------------
  7984. INT 10 - CU Writer v1.4 - LOAD PICTURE
  7985.     AH = D0h
  7986.     ???
  7987. Return: ???
  7988. SeeAlso: AH=B0h"CU Writer",AH=C4h
  7989. --------V-10D0-------------------------------
  7990. INT 10 U - VIDEO - HP 100LX/200LX - SET ZOOM MODE
  7991.     AH = D0h
  7992.     AL = zoom mode
  7993.         02h 80x25 mono
  7994.         03h 80x25 color
  7995.         80h 64x18 mono
  7996.         81h 64x18 color
  7997.         82h 40x25 mono
  7998.         83h 40x25 color
  7999.         84h 40x16 mono
  8000.         85h 40x16 color
  8001. Return: nothing
  8002. Note:    zoom mode can only be changed within zoom modes of the same color
  8003.       scheme; if needed, set to mono/color with AH=00h,AL=02h/03h; with
  8004.       mono video modes AL=07h or AL=21h only 80x25 and 40x16 will work
  8005.     the current zoom mode is stored in the BIOS data area at 0040h:009Fh
  8006. SeeAlso: AH=D1h,AH=D4h
  8007. --------V-10D000-----------------------------
  8008. INT 10 - S3VBE/Core2.0 v3.00+ - INSTALLATION CHECK
  8009.     AX = D000h
  8010. Return: AX = FFFFh if installed
  8011.         BX = resident code segment
  8012.         DX = version (binary, DH = major, DL = minor)
  8013. Program: S3VBE/Core2.0 is a freeware TSR by Dietmar Meschede to provide
  8014.       VESA 2.0 services on S3-based video cards with VESA 1.2 BIOS
  8015. SeeAlso: AX=D001h"S3VBE",AX=D002h"S3VBE",AX=D003h"S3VBE",AX=D005h"S3VBE"
  8016. --------V-10D001-----------------------------
  8017. INT 10 - S3VBE/Core2.0 v3.00+ - GET ACTIVE OPTIONS
  8018.     AX = D001h
  8019. Return: AX = FFFFh if supported
  8020.         BX = currently active options (see #0154)
  8021. SeeAlso: AX=D000h"S3VBE",AX=D002h"S3VBE"
  8022.  
  8023. Bitfields for S3VBE options:
  8024. Bit(s)    Description    (Table 0154)
  8025.  0    VESA VBE v2.0 extensions enabled
  8026.  1    linear frame buffer enabled
  8027.  2    low-resolution video mode support enabled
  8028.  8    never clear video memory during VBE mode set (v3.10+)
  8029. ---debug options---
  8030.  12    report VBE version 1.2 (v3.10+)
  8031.  13    always fail AX=4F0Ah (v3.10+)
  8032.  14    don't copy video mode list (v3.12+)
  8033. SeeAlso: #0148
  8034. --------V-10D002-----------------------------
  8035. INT 10 - S3VBE/Core2.0 v3.00+ - SET ACTIVE OPTIONS
  8036.     AX = D002h
  8037.     BX = new active options (see #0154)
  8038. Return: AX = FFFFh if supported
  8039. SeeAlso: AX=D000h"S3VBE",AX=D001h"S3VBE"
  8040. --------V-10D003-----------------------------
  8041. INT 10 U - S3VBE/Core2.0 v3.10+ - GET VBE/Core CAPABILITIES
  8042.     AX = D003h
  8043. Return: AX = FFFFh if supported
  8044.         BX = capabilities
  8045.         bit 0: SpeedUp = activate/deactivate linear addressing at
  8046.             A0000h for VBE functions 04h/05h
  8047. SeeAlso: AX=D000h"S3VBE",AX=D001h"S3VBE",AX=D004h"S3VBE",AX=D005h"S3VBE"
  8048. --------V-10D004-----------------------------
  8049. INT 10 U - S3VBE/Core2.0 v3.10+ - ACTIVATE SPEED-UP
  8050.     AX = D004h
  8051. Return: AX = FFFFh if supported
  8052.     BX = status
  8053.         0000h SpeedUp activated
  8054.         0001h SpeedUp not possible (wrong memory organization for mode)
  8055.         0002h SpeedUp not possible (linear frame buffer active)
  8056. Note:    called by S3 SpeedUp (see AX=C000h)
  8057. SeeAlso: AX=C000h"SpeedUp",AX=D000h"S3VBE",AX=D003h"S3VBE",AX=D005h"S3VBE"
  8058. --------V-10D005-----------------------------
  8059. INT 10 U - S3VBE/Core2.0 v3.10+ - DEACTIVATE SPEED-UP
  8060.     AX = D005h
  8061. Return: AX = FFFFh if supported
  8062.     BX = status
  8063.         0000h SpeedUp deactivated
  8064.         0001h SpeedUp not possible (wrong memory organization for mode)
  8065.         0002h SpeedUp not possible (linear frame buffer active)
  8066. Notes:    called by S3 SpeedUp (see AX=C000h)
  8067.     functions 06h-FFh (e.g. AX=D006h-D0FFh) are considered reserved by
  8068.       v3.10+ and return AX=5555h
  8069. SeeAlso: AX=C000h"SpeedUp",AX=D000h"S3VBE",AX=D003h"S3VBE",AX=D004h"S3VBE"
  8070. --------V-10D1-------------------------------
  8071. INT 10 U - VIDEO - HP 100LX/200LX - INTERNAL - ???
  8072.     AH = D1h
  8073.     AL = 01h
  8074. Return: ???
  8075. Note:    called by AH=D0h
  8076. SeeAlso: AH=D0h,AH=D4h
  8077. --------V-10D4-------------------------------
  8078. INT 10 U - VIDEO - HP 100LX/200LX - INTERNAL - ???
  8079.     AH = D4h
  8080.     AL = 29h
  8081. Return: ???
  8082. Note:    called by AH=D0h
  8083. SeeAlso: AH=D0h,AH=D1h
  8084. --------V-10D5-------------------------------
  8085. INT 10 - Netroom SCRNCLK - ???
  8086.     AH = D5h
  8087.     ???
  8088. Return: ???
  8089. Program: SCRNCLK is a "cloaked" screen accelerator included with Netroom
  8090. --------t-10DAAD-----------------------------
  8091. INT 10 - TSRUNIT v1.10 - INSTALLATION CHECK
  8092.     AX = DAADh
  8093.     BX = check signature (different for each TSR)
  8094.     CX = 0000h
  8095. Return: CX = return signature (nonzero) if installed
  8096.         ES = program segment prefix
  8097. Program: TSRUNIT is a Turbo Pascal unit for creating TSRs by Nir Sofer
  8098. --------V-10DFA5-----------------------------
  8099. INT 10 U - VIDEO - Compaq ADAPT.COM - GET ??? DATA AREA
  8100.     AX = DFA5h
  8101. Return: AX = BDBFh if supported
  8102.         ES:DI -> ??? data area
  8103.         BX = ES
  8104. SeeAlso: AX=BFA0h
  8105. --------V-10EE-------------------------------
  8106. INT 10 - VIDEO - IBM "Private" Function
  8107.     AH = EEh
  8108. SeeAlso: INT 13/AH=FFh"IBM"
  8109. --------V-10EF-------------------------------
  8110. INT 10 - VIDEO - MSHERC.COM - GET VIDEO ADAPTER TYPE AND MODE
  8111.     AH = EFh
  8112. Return: DL = video adapter type
  8113.         00h original Hercules
  8114.         01h Hercules Plus     (port 03BAh reads x001xxxxx)
  8115.         02h Hercules InColor (port 03BAh reads x101xxxxx)
  8116.         FFh not a Hercules-compatible card (port 03BAh bit 7 not pulsing)
  8117.     DH = memory mode byte
  8118.         00h "half" mode
  8119.         01h "full" mode
  8120.         FFh not a Hercules-compatible card
  8121. Program: MSHERC.COM/QBHERC.COM is a support program for the Microsoft Quick
  8122.       languages which makes their graphics libraries compatible with a
  8123.       Hercules card by adding video modes 08h and 88h, and supporting
  8124.       text in the new graphics modes.
  8125. Notes:    while in mode 08h or 88h, INT 10 supports the Hercules card much like
  8126.       a CGA.
  8127.     MSHERC performs an installation check by setting DL=FFh and testing
  8128.       whether it has been changed on return, which causes it to reinstall
  8129.       itself when no HGC is present (or HGC emulation has temporarily been
  8130.       disabled); a better installation check would be to use DX=80FFh and
  8131.       check whether DX has been changed
  8132.     reportedly returns DH=00h on some not-entirely-Hercules-compatible
  8133.       cards
  8134. Index:    installation check;MSHERC
  8135. --------V-10F0-------------------------------
  8136. INT 10 - EGA Register Interface Library - READ ONE REGISTER
  8137.     AH = F0h
  8138.     BL = register number
  8139.     BH = 00h
  8140.     DX = group index (see #0155)
  8141. Return: BL = data
  8142. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  8143.       compatibility box, and others
  8144. SeeAlso: AH=F1h,AH=F2h,INT 2F/AX=BC00h
  8145.  
  8146. (Table 0155)
  8147. Values for group index:
  8148.  Pointer/data chips
  8149.  00h    CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes
  8150.  08h    Sequencer (5 registers) 3C4h
  8151.  10h    Graphics Controller (9 registers) 3CEh
  8152.  18h    Attribute Controller (20 registers) 3C0h
  8153.  Single registers
  8154.  20h    Miscellaneous Output register 3C2h
  8155.  28h    Feature Control register (3BAh mono modes, 3DAh color modes)
  8156.  30h    Graphics 1 Position register 3CCh
  8157.  38h    Graphics 2 Position register 3CAh
  8158. --------V-10F1-------------------------------
  8159. INT 10 - EGA Register Interface Library - WRITE ONE REGISTER
  8160.     AH = F1h
  8161.     DX = group index (see #0155)
  8162.         if single register:
  8163.         BL = value to write
  8164.         otherwise
  8165.         BL = register number
  8166.         BH = value to write
  8167. Return: BL = data
  8168. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  8169.       compatibility box, and others
  8170. SeeAlso: AX=7F05h,AH=F0h,AH=F3h
  8171. --------V-10F2-------------------------------
  8172. INT 10 - EGA Register Interface Library - READ REGISTER RANGE
  8173.     AH = F2h
  8174.     CH = starting register number
  8175.     CL = number of registers (>1)
  8176.     DX = group index (00h,08h,10h,18h) (see #0155)
  8177.     ES:BX -> buffer, CL bytes
  8178. Return: nothing
  8179. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  8180.       compatibility box, and others
  8181. SeeAlso: AH=F0h,AH=F3h
  8182. --------V-10F3-------------------------------
  8183. INT 10 - EGA Register Interface Library - WRITE REGISTER RANGE
  8184.     AH = F3h
  8185.     CH = starting register
  8186.     CL = number of registers (>1)
  8187.     DX = group index (00h,08h,10h,18h) (see #0155)
  8188.     ES:BX -> buffer, CL bytes
  8189. Return: nothing
  8190. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  8191.       compatibility box, and others
  8192. SeeAlso: AX=7F05h,AH=F1h,AH=F2h
  8193. --------V-10F4-------------------------------
  8194. INT 10 - EGA Register Interface Library - READ REGISTER SET
  8195.     AH = F4h
  8196.     CX = number of registers to read (>1)
  8197.     ES:BX -> table of register records (see #0156)
  8198. Return: register values in table filled in
  8199. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  8200.       compatibility box, and others
  8201. SeeAlso: AH=F0h,AH=F2h,AH=F5h
  8202.  
  8203. Format of EGA RIL entries in table of register records:
  8204. Offset    Size    Description    (Table 0156)
  8205.  00h    WORD    group index
  8206.         Pointer/data chips
  8207.            00h CRTC (3B4h mono modes, 3D4h color modes)
  8208.            08h Sequencer 3C4h
  8209.            10h Graphics Controller 3CEh
  8210.            18h Attribute Controller 3C0h
  8211.         Single registers
  8212.            20h Miscellaneous Output register 3C2h
  8213.            28h Feature Control register (3BAh mono modes, 3DAh color)
  8214.            30h Graphics 1 Position register 3CCh
  8215.            38h Graphics 2 Position register 3CAh
  8216.  02h    BYTE    register number (0 for single registers)
  8217.  03h    BYTE    register value
  8218. --------V-10F5-------------------------------
  8219. INT 10 - EGA Register Interface Library - WRITE REGISTER SET
  8220.     AH = F5h
  8221.     CX = number of registers to write (>1)
  8222.     ES:BX -> table of records (see #0156)
  8223. Return: nothing
  8224. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  8225.       compatibility box, and others
  8226. SeeAlso: AX=7F05h,AH=F1h,AH=F3h,AH=F4h
  8227. --------V-10F6-------------------------------
  8228. INT 10 - EGA Register Interface Library - REVERT TO DEFAULT REGISTERS
  8229.     AH = F6h
  8230. Return: nothing
  8231. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  8232.       others
  8233. SeeAlso: AH=F7h
  8234. --------V-10F7-------------------------------
  8235. INT 10 - EGA Register Interface Library - DEFINE DEFAULT REGISTER TABLE
  8236.     AH = F7h
  8237.     DX = port number
  8238.        Pointer/data chips
  8239.           00h CRTC (3B4h mono modes, 3D4h color modes)
  8240.           08h Sequencer 3C4h
  8241.           10h Graphics Controller 3CEh
  8242.           18h Attribute Controller 3C0h
  8243.        Single registers
  8244.           20h Miscellaneous Output register 3C2h
  8245.           28h Feature Control register (3BAh mono modes, 3DAh color modes)
  8246.           30h Graphics 1 Position register 3CCh
  8247.           38h Graphics 2 Position register 3CAh
  8248.     ES:BX -> table of one-byte entries, one byte to be written to each
  8249.          register
  8250. Return: nothing
  8251. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  8252.       compatibility box, and others
  8253. SeeAlso: AH=F6h
  8254. --------V-10FA--BX0000-----------------------
  8255. INT 10 - EGA Register Interface Library - INTERROGATE DRIVER
  8256.     AH = FAh
  8257.     BX = 0000h
  8258. Return: BX = 0000h if RIL driver not present
  8259.     ES:BX -> EGA Register Interface version number, if present:
  8260.         byte 0 = major release number
  8261.         byte 1 = minor release number
  8262. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  8263.       compatibility box, and others
  8264. SeeAlso: AH=F6h,INT 2F/AX=BC00h
  8265. --------K-10FA-------------------------------
  8266. INT 10 - FASTBUFF.COM - INSTALLATION CHECK
  8267.     AH = FAh
  8268. Return: AX = 00FAh if installed
  8269.         ES = segment of resident code
  8270. Program: FASTBUFF.COM is a keyboard speedup/screen blanking utility by David
  8271.       Steiner
  8272. Index:    screen saver;FASTBUFF
  8273. --------V-10FE-------------------------------
  8274. INT 10 - TopView - GET SHADOW BUFFER
  8275.     AH = FEh
  8276.     ES:DI -> assumed video buffer
  8277.         B800h:0000h color text/CGA graphics, B000h:0000h mono text,
  8278.           or A000h:0000h EGA/VGA graphics (RSIS environments only)
  8279. Return: ES:DI -> actual video buffer for calling process
  8280. Desc:    Determine the address of the virtual screen to which the program
  8281.       should write instead of the actual video memory; this permits
  8282.       programs to be multitasked without interfering with each other's
  8283.       output, and allows memory managers to move the video memory to
  8284.       permit larger programs to be loaded.
  8285. Notes:    if no multitasker or RSIS-compliant environment is installed, ES:DI is
  8286.       returned unchanged; RSIS is the Relocated Screen Interface
  8287.       Specification
  8288.     for display pages other than 0, use AH=05h and AH=0Fh to determine
  8289.       whether a particular page exists
  8290.     TopView requires a call to AH=FFh to notify it that the screen has
  8291.       changed; DESQview will check for changes itself until the first call
  8292.       to AH=FFh
  8293. SeeAlso: AH=05h,AX=5201h,AH=FFh,INT 15/AX=1024h,INT 21/AH=2Bh"DESQview"
  8294. SeeAlso: INT 21/AH=ECh"DoubleDOS"
  8295. --------V-10FF-------------------------------
  8296. INT 10 - TopView - UPDATE SCREEN FROM SHADOW BUFFER
  8297.     AH = FFh
  8298.     CX = number of consecutive changed characters
  8299.     ES:DI -> first changed character in shadow buffer
  8300. Return: nothing
  8301. Notes:    avoid CX=0000h
  8302.     DESQview will discontinue the automatic screen updating initiated by
  8303.       AH=FEh after this call
  8304.     not supported (ignored) by DESQview/X 1.0x
  8305. SeeAlso: AH=93h,AH=FEh
  8306. --------E-10FF-------------------------------
  8307. INT 10 - DJ GO32.EXE 80386+ DOS extender - VIDEO EXTENSIONS
  8308.     AH = FFh
  8309.     AL = video mode (see #0157)
  8310. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  8311.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  8312. SeeAlso: AH=00h,INT 21/AH=FFh"GO32"
  8313.  
  8314. (Table 0157)
  8315. Values for GO32 video mode number:
  8316.  00h    80x25 text
  8317.  01h    default text
  8318.  02h    CXxDX text
  8319.  03h    biggest text
  8320.  04h    320x200 graphics
  8321.  05h    default graphics
  8322.  06h    CXxDX graphics
  8323.  07h    biggest non-interlaced graphics
  8324.  08h    biggest graphics
  8325. Index:    video modes;GO32
  8326. --------V-10FF-------------------------------
  8327. INT 10 - VIDEO - Oak VGA BIOS v1.02+ - SET EMULATION
  8328.     AH = FFh
  8329.     AL = emulation
  8330.         43h ('C') CGA emulation
  8331.         45h ('E') EGA emulation
  8332.         4Dh ('M') Hercules emulation
  8333.         56h ('V') VGA emulation
  8334.     ES:DI -> signature string "Calamity"
  8335. Return: VGA switched to suggested mode
  8336. SeeAlso: AH=00h,AX=007Fh/BH=00h,AX=007Fh/BH=02h,AX=5F01h
  8337. --------R-10FF00-----------------------------
  8338. INT 10 - CARBON COPY PLUS v5.0 - CHECK IF CC CONNECTED TO CCHELP
  8339.     AX = FF00h
  8340. Return: BL = state
  8341.         00h not connected
  8342.         01h connected
  8343. SeeAlso: AX=FF01h,AX=FF02h
  8344. --------R-10FF01-----------------------------
  8345. INT 10 - CARBON COPY PLUS v5.0 - DISCONNECT AND RESET LINE
  8346.     AX = FF01h
  8347. Return: nothing
  8348. SeeAlso: AX=FF00h,AX=FF02h
  8349. --------R-10FF02-----------------------------
  8350. INT 10 - CARBON COPY PLUS v5.0 - GET LAST PHONE NUMBER DIALED
  8351.     AX = FF02h
  8352. Return: ES:DI -> ASCIZ phone number
  8353. SeeAlso: AX=FF00h,AX=FF01h
  8354. --------C-11---------------------------------
  8355. INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK
  8356. Desc:    automatically generated by the CPU when the AC flag is set, the current
  8357.       privilege level is 3, and a misaligned memory access (WORD not on an
  8358.       even address or DWORD not on a multiple of 4) is made
  8359. Note:    not all V86 monitors allow the AC flag to be set, such as Turbo
  8360.       Debugger 386
  8361. SeeAlso: INT 12"CPU"
  8362. --------B-11---------------------------------
  8363. INT 11 - BIOS - GET EQUIPMENT LIST
  8364. Return: (E)AX = BIOS equipment list word (see #0158,#2886 at INT 4B"Tandy")
  8365. Note:    since older BIOSes do not know of the existence of EAX, the high word
  8366.       of EAX should be cleared before this call if any of the high bits
  8367.       will be tested
  8368. SeeAlso: INT 4B"Tandy 2000",MEM 0040h:0010h
  8369.  
  8370. Bitfields for BIOS equipment list:
  8371. Bit(s)    Description    (Table 0158)
  8372.  0    floppy disk(s) installed (number specified by bits 7-6)
  8373.  1    80x87 coprocessor installed
  8374.  3-2    number of 16K banks of RAM on motherboard (PC only)
  8375.     number of 64K banks of RAM on motherboard (XT only)
  8376.  2    pointing device installed (PS)
  8377.  3    unused (PS)
  8378.  5-4    initial video mode
  8379.     00 EGA, VGA, or PGA
  8380.     01 40x25 color
  8381.     10 80x25 color
  8382.     11 80x25 monochrome
  8383.  7-6    number of floppies installed less 1 (if bit 0 set)
  8384.  8    DMA support installed (PCjr, Tandy 1400LT)
  8385.     DMA support *not* installed (Tandy 1000's)
  8386.  11-9    number of serial ports installed
  8387.  12    game port installed
  8388.  13    serial printer attached (PCjr)
  8389.     internal modem installed (PC/Convertible)
  8390.  15-14    number of parallel ports installed
  8391. ---Compaq, Dell, and many other 386/486 machines--
  8392.  23    page tables set so that Weitek coprocessor addressable in real mode
  8393.  24    Weitek math coprocessor present
  8394. ---Compaq Systempro---
  8395.  25    internal DMA parallel port available
  8396.  26    IRQ for internal DMA parallel port (if bit 25 set)
  8397.     0 = IRQ5
  8398.     1 = IRQ7
  8399.  28-27    parallel port DMA channel
  8400.     00 DMA channel 0
  8401.     01 DMA channel 0 ???
  8402.     10 reserved
  8403.     11 DMA channel 3
  8404. SeeAlso: INT 12"BIOS",#2886 at INT 4B"Tandy 2000"
  8405. --------d-11----SI6A6A-----------------------
  8406. INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6
  8407.     SI = 6A6Ah
  8408.     AH = command (see #0159)
  8409.     AL = SCSI Addressing (see #0160)
  8410. Return: CF clear if successful
  8411.         DI = 6A6Ah if AH=01h on entry (maybe for all functions???)
  8412.         AH = ??? for command 01h
  8413.     CF set on error
  8414.         AL = error code
  8415. SeeAlso: INT 21/AX=4402h"ASPI"
  8416.  
  8417. (Table 0159)
  8418. Values for SDLP command:
  8419.  00h    SDLP initialization
  8420.  01h    SDLP System Identify
  8421.  02h    simple read sectors
  8422.  03h    simple write sectors
  8423.  04h    simple verify sectors/seek to sector
  8424.  05h    get device size/type
  8425.  06h    ready unit
  8426.  07h    format unit
  8427.  08h    diagnostics
  8428.  09h    rewind
  8429.  0Ah    erase
  8430.  0Bh    write filemarks
  8431.  0Ch    space
  8432.  0Dh    prevent/allow media removal
  8433.  0Eh    load/unload media
  8434.  0Fh    reserved - returns good status
  8435.  10h    set block size
  8436.  11h    write setmark
  8437.  12h    set error level
  8438.  13h    get address of Request Sense Buffer
  8439.  14h    get SDLP error via Request Sense
  8440.  F0h    Vendor Unique Function (WD7000-FASST2 only)
  8441.  FDh    reset current SCSI HAC
  8442.  FEh    get/set current SCSI HAC
  8443.  FFh    execute SCSI command
  8444.  
  8445. Bitfields for SDLP SCSI addressing:
  8446. Bit(s)    Description    (Table 0160)
  8447.  7-6    Host Adapter
  8448.  5-3    SCSI Target ID
  8449.  2-0    SCSI Target LUN (logical unit number)
  8450. --------V-110225BX6900-----------------------
  8451. INT 11 - Blank-It Screen Blanker - INSTALLATION CHECK
  8452.     AX = 0225h
  8453.     BX = 6900h
  8454. Return: BL = 23h
  8455.     ES:DI -> ASCIZ "BLNKIT"
  8456. Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
  8457.       Inc.
  8458. SeeAlso: AX=0225h/BX=6902h,AX=0225h/BX=6908h,AX=0225h/BX=6909h,INT 14/AX=AA01h
  8459. Index:    screen saver;Blank-It
  8460. --------V-110225BX6901-----------------------
  8461. INT 11 - Blank-It Screen Blanker - SET TIMEOUT FOR SCREEN BLANKING
  8462.     AX = 0225h
  8463.     BX = 6901h
  8464.     CX = timeout in timer ticks (18.2/second) or 0000h to disable timeout
  8465.          largest value is 59 minutes (FBACh or 64428)
  8466. Return: CF clear if successful
  8467.         DI = 6A6Ah (possibly also 6A6Ah for all following functions)
  8468.         AH = ???
  8469.     CF set on error
  8470.         AL = error code
  8471. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6904h
  8472. Index:    screen saver;Blank-It
  8473. --------V-110225BX6902-----------------------
  8474. INT 11 - Blank-It Screen Blanker - ENABLE THE SOFTWARE
  8475.     AX = 0225h
  8476.     BX = 6902h
  8477. Return: CF clear if successful
  8478.     CF set on error
  8479.         AL = error code
  8480. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6903h
  8481. Index:    screen saver;Blank-It
  8482. --------V-110225BX6903-----------------------
  8483. INT 11 - Blank-It Screen Blanker - DISABLE THE SOFTWARE
  8484.     AX = 0225h
  8485.     BX = 6903h
  8486. Return: CF clear if successful
  8487.     CF set on error
  8488.         AL = error code
  8489. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6902h
  8490. Index:    screen saver;Blank-It
  8491. --------V-110225BX6904-----------------------
  8492. INT 11 - Blank-It Screen Blanker - GET BLANKING TIMEOUT
  8493.     AX = 0225h
  8494.     BX = 6904h
  8495. Return: CF clear if successful
  8496.         BX = timeout (see AX=0225h/BX=6901h)
  8497.     CF set on error
  8498.         AL = error code
  8499. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6901h
  8500. Index:    screen saver;Blank-It
  8501. --------V-110225BX6905-----------------------
  8502. INT 11 - Blank-It Screen Blanker - ENABLE WINDOWS COMPATIBILITY MODE
  8503.     AX = 0225h
  8504.     BX = 6905h
  8505. Return: CF clear if successful
  8506.     CF set on error
  8507.         AL = error code
  8508. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6906h
  8509. Index:    screen saver;Blank-It
  8510. --------V-110225BX6906-----------------------
  8511. INT 11 - Blank-It Screen Blanker - DISABLE WINDOWS COMPATIBILITY MODE
  8512.     AX = 0225h
  8513.     BX = 6906h
  8514. Return: CF clear if successful
  8515.     CF set on error
  8516.         AL = error code
  8517. Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
  8518.       Inc.
  8519. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6905h
  8520. Index:    screen saver;Blank-It
  8521. --------V-110225BX6907-----------------------
  8522. INT 11 - Blank-It Screen Blanker - UNBLANK THE SCREEN
  8523.     AX = 0225h
  8524.     BX = 6907h
  8525. Return: CF clear if successful
  8526.     CF set on error
  8527.         AL = error code
  8528. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6908h
  8529. Index:    screen saver;Blank-It
  8530. --------V-110225BX6908-----------------------
  8531. INT 11 - Blank-It Screen Blanker - BLANK THE SCREEN
  8532.     AX = 0225h
  8533.     BX = 6908h
  8534. Return: CF clear if successful
  8535.     CF set on error
  8536.         AL = error code
  8537. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6907h
  8538. Index:    screen saver;Blank-It
  8539. --------V-110225BX6909-----------------------
  8540. INT 11 - Blank-It Screen Blanker - SET HOTKEY FOR MANUAL BLANKING
  8541.     AX = 0225h
  8542.     BX = 6909h
  8543.     CL = key scan code (see #0161)
  8544. Return: CF clear if successful
  8545.     CF set on error
  8546.         AL = error code
  8547. Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
  8548.       Inc.
  8549. SeeAlso: AX=0225h/BX=6900h
  8550. Index:    screen saver;Blank-It|hotkeys;Blank-It
  8551.  
  8552. (Table 0161)
  8553. Values for Blank-It hotkey scan code:
  8554.  00h    No hot key
  8555.  1Dh    Left CTRL
  8556.  2Ah    Left Shift
  8557.  36h    Right Shift
  8558.  57h    F11
  8559.  58h    F12
  8560. SeeAlso: #0005
  8561. --------G-1105D7-----------------------------
  8562. INT 11 CU - Borland C++ IDE - INSTALLED CALLOUT
  8563.     AX = 05D7h
  8564.     BX = product ID (0088h)
  8565. Note:    called by the BC++ IDE when an application calls
  8566.       INT 12/AX=05D7h/BX=05D7h
  8567. SeeAlso: INT 12/AX=05D7h/BX=05D7h
  8568. Index:    installation check;Borland C++ IDE
  8569. --------F-1177-------------------------------
  8570. INT 11 - RainbowFAX v1.3 - SFENGINE API - OPERATIONAL CONTROL
  8571.     AH = 77h
  8572.     AL = subfunction
  8573.         01h request SFENGINE start
  8574.         Return: AX = 0001h
  8575.         02h check if SFENGINE started
  8576.         Return: AX = 0000h or 0001h
  8577.         03h request SFENGINE stop
  8578.         Return: AX = 0001h
  8579.         04h check if SFENGINE stopped
  8580.         Return: AX = 0000h or 0001h
  8581.         05h installation check
  8582.         Return: AX = 0001h
  8583.         06h uninstall???
  8584.         BX:DX -> return address for successful uninstall???
  8585.         Return: (at caller's address)
  8586.             AX = 0000h
  8587.         else
  8588.         Return: AX = FFFFh (invalid subfunction)
  8589. Return: ES:DX -> ASCIZ signature string "SFAX ENGINE V1.0"
  8590.         followed by internal data area???
  8591. SeeAlso: AH=78h,AH=79h,AH=7Ah,AH=7Ch
  8592. Index:    installation check;RainbowFAX|installation check;SFENGINE
  8593. Index:    uninstall;RainbowFAX|uninstall;SFENGINE
  8594. --------F-1178-------------------------------
  8595. INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
  8596.     AH = 78h
  8597.     AL = subfunction
  8598.         01h set ???
  8599.         BX = new state for ???
  8600.             0000h ???
  8601.             else ???
  8602.         Return: AX = 0001h
  8603.         02h set ???
  8604.         BX = ???
  8605.         CX = ???
  8606.         Return: AX = 0001h
  8607.         03h set ???
  8608.         BX = new state for ???
  8609.             0000h ???
  8610.             else ???
  8611.         Return: AX = 0001h
  8612.         else
  8613.         Return: AX = FFFFh (invalid subfunction)
  8614. SeeAlso: AH=77h,AH=79h,AH=7Ah,AH=7Ch
  8615. --------F-1179-------------------------------
  8616. INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
  8617.     AH = 79h
  8618.     AL = subfunction
  8619.         01h set ??? flag
  8620.         Return: AX = previous state (0000h already set, 0001h clear)
  8621.         02h clear ??? flag (refer to subfunc 01h)
  8622.         Return: AX = 0001h
  8623.         03h set ??? flag (different from subfn 02h or 04h)
  8624.         Return: AX = 0001h
  8625.         04h clear ??? flag (different from subfn 02h or 03h)
  8626.         Return: AX = 0001h
  8627.         else
  8628.         Return: AX = FFFFh (invalid subfunction)
  8629. SeeAlso: AH=77h,AH=78h,AH=7Ah,AH=7Ch
  8630. --------F-117A-------------------------------
  8631. INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
  8632.     AH = 7Ah
  8633.     AL = subfunction
  8634.         01h set ??? flag
  8635.         Return: AX = previous state (0000h already set, 0001h clear)
  8636.         02h clear ??? flag
  8637.         Return: AX = 0001h
  8638.         03h set ??? flag (different from subfn 02h)
  8639.         Return: AX = 0001h
  8640.         else
  8641.         Return: AX = FFFFh (invalid subfunction)
  8642. SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ch
  8643. --------F-117C01-----------------------------
  8644. INT 11 - RainbowFAX v1.3 - SFENGINE API - SET ??? FLAG
  8645.     AX = 7C01h
  8646. Return: AX = 0001h
  8647. SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah,AX=7C02h,AX=7C03h
  8648. --------F-117C02-----------------------------
  8649. INT 11 - RainbowFAX v1.3 - SFENGINE API - CLEAR ??? FLAG
  8650.     AX = 7C02h
  8651. Return: AX = 0001h
  8652. SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah,AX=7C01h,AX=7C03h
  8653. --------F-117C03-----------------------------
  8654. INT 11 - RainbowFAX v1.3 - SFENGINE API - UNSUPPORTED FUNCTIONS
  8655.     AX = 7C03h-7CFFh
  8656. Return: AX = FFFFh
  8657. SeeAlso: AH=77h,AX=7C01h,AX=7C02h
  8658. --------S-11BC--DX1954-----------------------
  8659. INT 11 - BNU FOSSIL - INSTALLATION CHECK
  8660.     AH = BCh
  8661.     DX = 1954h
  8662. Return: AX = 1954h
  8663.     ES:DX -> entry point of driver (instead of INT 14)
  8664. SeeAlso: INT 14/AH=04h"FOSSIL"
  8665. --------d-11FF--SI6A6A-----------------------
  8666. INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND
  8667.     AH = FFh
  8668.     SI = 6A6Ah
  8669.     AL = SCSI Addressing (see #0162)
  8670.     CX = bytes of data to be transmitted (max FFF0h)
  8671.     DH = 00h
  8672.     DL = length of SCSI Command Descriptor Block
  8673.     DS:DI -> SCSI Command Descriptor Block
  8674.     ES:BX -> data buffer
  8675. Return: CF set on error
  8676.         AL = error code
  8677.     CF clear if successful
  8678. Note:    because of busmaster operations with WD7000FASST avoid accessing
  8679.       video memory directly; check 386 memory manager for VDS support.
  8680.       The WD7000XTAT works with programmed IO and does not have this
  8681.       limitation.
  8682. SeeAlso: INT 21/AX=4402h"ASPI",INT 2F/AX=7F01h
  8683.  
  8684. Bitfields for SDLP SCSI addressing:
  8685. Bit(s)    Description    (Table 0162)
  8686.  2-0    SCSI Target LUN (logical unit number)
  8687.  5-3    SCSI Target ID
  8688.  7    write flag, set for write operations, clear otherwise
  8689. --------T-11FFFECXFFFE-----------------------
  8690. INT 11 - BACK&FORTH (before v1.62) API
  8691.     AX = FFFEh
  8692.     CX = FFFEh
  8693.     BX = function
  8694.         00h installation check
  8695.         Return: AX = installation state
  8696.                 0001h BNFHIGH and BNFLOW both loaded
  8697.                 0003h only BNFHIGH loaded
  8698.                 else neither loaded
  8699.         01h ???
  8700.         Return: DX:AX -> ???
  8701.         02h ???
  8702.         03h ???
  8703.         04h ???
  8704.         05h ??? switches current PSP segment and stack if BNFLOW has not
  8705.             yet announced itself installed
  8706.         06h ???
  8707.         Return: AX = ???
  8708. SeeAlso: INT 12/AX=FFFEh
  8709. Index:    installation check;BACK&FORTH
  8710. --------B-12---------------------------------
  8711. INT 12 - BIOS - GET MEMORY SIZE
  8712. Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
  8713. Note:    this call returns the contents of the word at 0040h:0013h; in PC and
  8714.       XT, this value is set from the switches on the motherboard
  8715. SeeAlso: INT 11"BIOS",INT 2F/AX=4A06h,INT 4C"Tandy 2000",MEM 0040h:0013h
  8716. --------C-12---------------------------------
  8717. INT 12 - CPU-generated (Pentium) - MACHINE CHECK EXCEPTION
  8718. Notes:    Intel documents this interrupt as CPU model-dependent; for current
  8719.       Pentium processors, the reason for the machine check exception may
  8720.       be read from model-specific registers 00h and 01h (described, for
  8721.       example, in Christian Ludloff's 4P package)
  8722.     this exception is enabled by bit 6 of CR4
  8723. SeeAlso: INT 11"CPU",MSR 00000000h,MSR 00000001h
  8724. --------K-12----CX1806-----------------------
  8725. INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK
  8726.     CX = 1806h
  8727. Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
  8728.     CX = 1960h if installed
  8729. Program: KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows
  8730.       accented characters and box drawing on standard QWERTY keyboards; it
  8731.       also provides break-to-DOS and screen blanking capabilities
  8732. SeeAlso: INT 14/AX=AA01h
  8733. Index:    screen saver;KEYBUI
  8734. --------d-12----CX1807-----------------------
  8735. INT 12 - PARKER v2.0+ - INSTALLATION CHECK
  8736.     CX = 1807h
  8737. Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
  8738.     CX = 1961h if installed
  8739. Program: PARKER is an optionally-resident hard disk parking program by Johan
  8740.       Zwiekhorst
  8741. --------G-1205D7BX05D7-----------------------
  8742. INT 12 U - Borland C++ IDE - INSTALLATION CHECK
  8743.     AX = 05D7h (1495d)
  8744.     BX = 05D7h
  8745. Note:    the BC++ IDE will call INT 11/AX=05D7h/BX=0088h if it is loaded
  8746. SeeAlso: INT 11/AX=05D7h
  8747. --------v-124350BX4920-----------------------
  8748. INT 12 C - CPI-standard virus - "FRIEND" CHECK
  8749.     AX = 4350h
  8750.     BX = 4920h
  8751.     CX = AB46h
  8752.     DX = 554Eh
  8753. Return: if friendly (not to be infected)
  8754.         CX:DX -> ASCIZ identity code (changes yearly)
  8755. SeeAlso: INT 13/AX=EC00h"VIRUS",INT 13/AX=5001h,INT 21/AX=0B56h
  8756. --------T-12FFFECXFFFE-----------------------
  8757. INT 12 - Back&Forth v1.62+ - API
  8758.     AX = FFFEh
  8759.     CX = FFFEh
  8760.     BX = function
  8761.         00h installation check
  8762.         Return: AX = 0001h installed
  8763.                  else  not loaded
  8764.         01h (reserved)
  8765.         02h build program ID list (shareware Back&Forth)
  8766.         ES:DI -> buffer of at least 100 bytes, to be filled with words
  8767.         Return: AX = number of programs defined
  8768.             ES:DI buffer filled with AX words
  8769.         02h get memory statistics (Back&Forth Professional)
  8770.         Return: AX = available swap memory, KBytes
  8771.             BX = maximum task size, KBytes
  8772.             DX = fixed overhead per task, excluding video/macro
  8773.                   storage
  8774.         03h switch to specified task (task need not be open yet)
  8775.         DX = two-letter program ID
  8776.         Return: AX = status
  8777.                 0000h if task undefined
  8778.                 0001h task switch will occur when safe
  8779.         04h (reserved)
  8780.         05h (reserved)
  8781.         06h get version (documented only for Back&Forth Professional)
  8782.         Return: AX = version * 100 (v1.71 = 00ABh)
  8783.         07h spawn program (Back&Forth Professional only???)
  8784.         ES:DI -> BF_SPAWN record (see #0164)
  8785.         Return: AX = status
  8786.                 0000h if no task handles free
  8787.                 0001h spawn will occur when safe
  8788.         08h get open tasks (documented only for Back&Forth Professional)
  8789.         ES:DI -> task info buffer (see #0163,#0165)
  8790.         Return: AX = number of open tasks (max 20)
  8791.         Note:    the supplied buffer must be large enough to hold 21
  8792.               task entries
  8793.         09h (reserved)
  8794.         ---Back&Forth Professional---
  8795.         0Ah get active clipboard filename
  8796.         Return: DX:AX -> ASCIZ clipboard filename
  8797.         0Bh get active task number
  8798.         AX = active task number (00h-13h)
  8799.         BX = number of tasks allocated
  8800.         DX = maximum number of tasks
  8801.         0Ch (reserved)
  8802.         0Dh (reserved)
  8803.         0Eh (reserved)
  8804.         0Fh stuff string into keyboard buffer
  8805.         ES:DI -> ASCIZ string to be stuffed
  8806.         Return: nothing
  8807.         10h check if in graphics mode
  8808.         Return: AX = state
  8809.                 0000h color text mode
  8810.                 0004h mono text mode
  8811.                 FFFFh graphics mode
  8812.         11h get Back&Forth Professional user number
  8813.         Return: AX = user number (0000h-00FFh)
  8814.         12h switch task by task number
  8815.         DX = task number
  8816.         Return: AX = status
  8817.                 0000h attempted to switch to active task
  8818.                 0001h task switch will occur when safe
  8819.                 FFFFh invalid task number
  8820.         13h delete (kill) task
  8821.         DX = task number
  8822.         Return: AX = status
  8823.                 0000h attempted to delete the active task
  8824.                 0001h successfully deleted
  8825.                 FFFFh invalid task number
  8826.         Note:    the active task number will change if the deleted task
  8827.               was lower in the task list than the active task
  8828.         14h get next available task handle
  8829.         Return:    AX = next available task handle
  8830.                 FFFFh if task table is full
  8831. Program: Back & Forth is a task switcher by Progressive Solutions, Inc.
  8832. SeeAlso: INT 11/AX=FFFEh
  8833. Index:    installation check;BACK&FORTH
  8834.  
  8835. Format of Back&Forth task info buffer:
  8836. Offset    Size    Description    (Table 0163)
  8837.  00h 21 BYTEs    ASCIZ task name
  8838.  15h    BYTE    hotkey shift state (as for INT 16/AH=02h)
  8839.  16h    WORD    hotkey scan code (see also #0005)
  8840.  18h    WORD    program ID
  8841. Index:    hotkeys;Back&Forth
  8842. SeeAlso: #0164,#0165
  8843.  
  8844. Format of Back&Forth Professional BF_SPAWN record:
  8845. Offset    Size    Description    (Table 0164)
  8846.  00h 21 BYTEs    task description
  8847.  15h    BYTE    flag: disable hotkeys
  8848.  16h    WORD    environment size in bytes
  8849.  18h    BYTE    hotkey shift flags
  8850.  19h    WORD    hotkey scancode
  8851.  1Bh    WORD    maximum number of EMS pages
  8852.  1Dh    WORD    required memory in KBytes
  8853.  1Fh  3 BYTEs    DESQview-style two-letter program ID
  8854.  22h 13 BYTEs    base name of program to be run (no path or extension)
  8855.  2Fh 66 BYTEs    directory from which to start program
  8856.  71h 66 BYTEs    initial current directory for program
  8857. SeeAlso: #0163,#0165
  8858.  
  8859. Format of Back&Forth Professional BF_TASK record:
  8860. Offset    Size    Description    (Table 0165)
  8861.  00h    DWORD    Unix-style task start time (seconds since 1/1/1970)
  8862.  04h 21 BYTEs    task description
  8863.  19h    DWORD    elapsed time in task (seconds)
  8864.  1Dh    WORD    task ID
  8865.  1Fh    BYTE    task hotkey keyboard flags
  8866.  20h    WORD    task hotkey scan code (see also #0005)
  8867.  22h    DWORD    time task was suspended/exited
  8868.  26h    WORD    task handle
  8869. SeeAlso: #0163,#0164
  8870. --------!---Section--------------------------
  8871. Interrupt List, part 2 of 16
  8872. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
  8873. --------B-1300-------------------------------
  8874. INT 13 - DISK - RESET DISK SYSTEM
  8875.     AH = 00h
  8876.     DL = drive (if bit 7 is set both hard disks and floppy disks reset)
  8877. Return: AH = status (see #0166)
  8878.     CF clear if successful (returned AH=00h)
  8879.     CF set on error
  8880. Note:    forces controller to recalibrate drive heads (seek to track 0)
  8881.     for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
  8882.       both the master drive and the slave drive respond to the Reset
  8883.       function that is issued to either drive
  8884. SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4D/AH=00h"TI Professional"
  8885. SeeAlso: INT 56"Tandy 2000",MEM 0040h:003Eh
  8886. --------B-1301-------------------------------
  8887. INT 13 - DISK - GET STATUS OF LAST OPERATION
  8888.     AH = 01h
  8889.     DL = drive (bit 7 set for hard disk)
  8890. Return: CF clear if successful (returned status 00h)
  8891.     CF set on error
  8892.     AH = status of previous operation (see #0166)
  8893. Note:    some BIOSes return the status in AL; the PS/2 Model 30/286 returns the
  8894.       status in both AH and AL
  8895. SeeAlso: AH=00h,INT 4D/AH=01h,MEM 0040h:0041h,MEM 0040h:0074h
  8896.  
  8897. (Table 0166)
  8898. Values for disk operation status:
  8899.  00h    successful completion
  8900.  01h    invalid function in AH or invalid parameter
  8901.  02h    address mark not found
  8902.  03h    disk write-protected
  8903.  04h    sector not found/read error
  8904.  05h    reset failed (hard disk)
  8905.  05h    data did not verify correctly (TI Professional PC)
  8906.  06h    disk changed (floppy)
  8907.  07h    drive parameter activity failed (hard disk)
  8908.  08h    DMA overrun
  8909.  09h    data boundary error (attempted DMA across 64K boundary or >80h sectors)
  8910.  0Ah    bad sector detected (hard disk)
  8911.  0Bh    bad track detected (hard disk)
  8912.  0Ch    unsupported track or invalid media
  8913.  0Dh    invalid number of sectors on format (PS/2 hard disk)
  8914.  0Eh    control data address mark detected (hard disk)
  8915.  0Fh    DMA arbitration level out of range (hard disk)
  8916.  10h    uncorrectable CRC or ECC error on read
  8917.  11h    data ECC corrected (hard disk)
  8918.  20h    controller failure
  8919.  31h    no media in drive (IBM/MS INT 13 extensions)
  8920.  32h    incorrect drive type stored in CMOS (Compaq)
  8921.  40h    seek failed
  8922.  80h    timeout (not ready)
  8923.  AAh    drive not ready (hard disk)
  8924.  B0h    volume not locked in drive (INT 13 extensions)
  8925.  B1h    volume locked in drive (INT 13 extensions)
  8926.  B2h    volume not removable (INT 13 extensions)
  8927.  B3h    volume in use (INT 13 extensions)
  8928.  B4h    lock count exceeded (INT 13 extensions)
  8929.  B5h    valid eject request failed (INT 13 extensions)
  8930.  BBh    undefined error (hard disk)
  8931.  CCh    write fault (hard disk)
  8932.  E0h    status register error (hard disk)
  8933.  FFh    sense operation failed (hard disk)
  8934. SeeAlso: #M022
  8935. --------B-1302-------------------------------
  8936. INT 13 - DISK - READ SECTOR(S) INTO MEMORY
  8937.     AH = 02h
  8938.     AL = number of sectors to read (must be nonzero)
  8939.     CH = low eight bits of cylinder number
  8940.     CL = sector number 1-63 (bits 0-5)
  8941.          high two bits of cylinder (bits 6-7, hard disk only)
  8942.     DH = head number
  8943.     DL = drive number (bit 7 set for hard disk)
  8944.     ES:BX -> data buffer
  8945. Return: CF set on error
  8946.         if AH = 11h (corrected ECC error), AL = burst length
  8947.     CF clear if successful
  8948.     AH = status (see #0166)
  8949.     AL = number of sectors transferred (only valid if CF set for some
  8950.           BIOSes)
  8951. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  8952.       enough; the read should be retried at least three times, resetting
  8953.       the disk with AH=00h between attempts
  8954.     most BIOSes support "multitrack" reads, where the value in AL
  8955.       exceeds the number of sectors remaining on the track, in which
  8956.       case any additional sectors are read beginning at sector 1 on
  8957.       the following head in the same cylinder; the CONFIG.SYS command
  8958.       MULTITRACK can be used to force DOS to split disk accesses which
  8959.       would wrap across a track boundary into two separate calls
  8960.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  8961.       DH (head number) since the WD-1003 controller which is the standard
  8962.       AT controller (and the controller that IDE emulates) only supports
  8963.       16 heads
  8964.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  8965.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  8966.       into bits 6 and 7 of DH
  8967.     under Windows95, a volume must be locked (see INT 21/AX=440Dh/CX=084Bh)
  8968.       in order to perform direct accesses such as INT 13h reads and writes
  8969. SeeAlso: AH=03h,AH=0Ah,AH=06h"V10DISK.SYS",AH=21h"PS/1",AH=42h"IBM"
  8970. SeeAlso: INT 21/AX=440Dh/CX=084Bh,INT 4D/AH=02h
  8971. --------B-1303-------------------------------
  8972. INT 13 - DISK - WRITE DISK SECTOR(S)
  8973.     AH = 03h
  8974.     AL = number of sectors to write (must be nonzero)
  8975.     CH = low eight bits of cylinder number
  8976.     CL = sector number 1-63 (bits 0-5)
  8977.          high two bits of cylinder (bits 6-7, hard disk only)
  8978.     DH = head number
  8979.     DL = drive number (bit 7 set for hard disk)
  8980.     ES:BX -> data buffer
  8981. Return: CF set on error
  8982.     CF clear if successful
  8983.     AH = status (see #0166)
  8984.     AL = number of sectors transferred
  8985.           (only valid if CF set for some BIOSes)
  8986. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  8987.       enough; the write should be retried at least three times, resetting
  8988.       the disk with AH=00h between attempts
  8989.     most BIOSes support "multitrack" writes, where the value in AL
  8990.       exceeds the number of sectors remaining on the track, in which
  8991.       case any additional sectors are written beginning at sector 1 on
  8992.       the following head in the same cylinder; the CONFIG.SYS command
  8993.       MULTITRACK can be used to force DOS to split disk accesses which
  8994.       would wrap across a track boundary into two separate calls
  8995.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  8996.       DH (head number) since the WD-1003 controller which is the standard
  8997.       AT controller (and the controller that IDE emulates) only supports
  8998.       16 heads
  8999.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  9000.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  9001.       into bits 6 and 7 of DH
  9002.     under Windows95, an application must issue a physical volume lock on
  9003.       the drive via INT 21/AX=440Dh before it can successfully write to
  9004.       the disk with this function
  9005. SeeAlso: AH=02h,AH=0Bh,AH=07h"V10DISK.SYS",AH=22h"PS/1",AH=43h"IBM"
  9006. SeeAlso: INT 21/AX=440Dh"DOS 3.2+",INT 4D/AH=03h
  9007. --------B-1304-------------------------------
  9008. INT 13 - DISK - VERIFY DISK SECTOR(S)
  9009.     AH = 04h
  9010.     AL = number of sectors to verify (must be nonzero)
  9011.     CH = low eight bits of cylinder number
  9012.     CL = sector number 1-63 (bits 0-5)
  9013.          high two bits of cylinder (bits 6-7, hard disk only)
  9014.     DH = head number
  9015.     DL = drive number (bit 7 set for hard disk)
  9016.     ES:BX -> data buffer (PC,XT,AT with BIOS prior to 11/15/85)
  9017. Return: CF set on error
  9018.     CF clear if successful
  9019.     AH = status (see #0166)
  9020.     AL = number of sectors verified
  9021. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  9022.       enough; the write should be retried at least three times, resetting
  9023.       the disk with AH=00h between attempts
  9024.     this function does not compare the disk with memory, it merely
  9025.       checks whether the sector's stored CRC matches the data's actual CRC
  9026.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  9027.       DH (head number) since the WD-1003 controller which is the standard
  9028.       AT controller (and the controller that IDE emulates) only supports
  9029.       16 heads
  9030.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  9031.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  9032.       into bits 6 and 7 of DH
  9033. SeeAlso: AH=02h,AH=44h,INT 4D/AH=04h,INT 4D/AH=06h
  9034. --------B-1305-------------------------------
  9035. INT 13 - FLOPPY - FORMAT TRACK
  9036.     AH = 05h
  9037.     AL = number of sectors to format
  9038.     CH = track number
  9039.     DH = head number
  9040.     DL = drive number
  9041.     ES:BX -> address field buffer (see #0167)
  9042. Return: CF set on error
  9043.     CF clear if successful
  9044.     AH = status (see #0166)
  9045. Notes:    on AT or higher, call AH=17h first
  9046.     the number of sectors per track is read from the diskette parameter
  9047.       table pointed at by INT 1E
  9048. SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E
  9049.  
  9050. Format of floppy format address field buffer entry (one per sector in track):
  9051. Offset    Size    Description    (Table 0167)
  9052.  00h    BYTE    track number
  9053.  01h    BYTE    head number (0-based)
  9054.  02h    BYTE    sector number
  9055.  03h    BYTE    sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
  9056. --------B-1305-------------------------------
  9057. INT 13 - FIXED DISK - FORMAT TRACK
  9058.     AH = 05h
  9059.     AL = interleave value (XT-type controllers only)
  9060.     ES:BX -> 512-byte format buffer
  9061.         the first 2*(sectors/track) bytes contain F,N for each sector
  9062.            F = sector type
  9063.             00h for good sector
  9064.             20h to unassign from alternate location
  9065.             40h to assign to alternate location
  9066.             80h for bad sector
  9067.            N = sector number
  9068.     CH = cylinder number (bits 8,9 in high bits of CL)
  9069.     CL = high bits of cylinder number (bits 7,6)
  9070.     DH = head
  9071.     DL = drive
  9072. Return: CF set on error
  9073.     CF clear if successful
  9074.     AH = status code (see #0166)
  9075. Notes:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  9076.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  9077.       into bits 6 and 7 of DH
  9078.     for XT-type controllers on an AT or higher, AH=0Fh should be called
  9079.       first
  9080.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  9081.       DH (head number) since the WD-1003 controller which is the standard
  9082.       AT controller (and the controller that IDE emulates) only supports
  9083.       16 heads
  9084.     not all controller support sector types 20h and 40h
  9085.     under Windows95, an application must issue a physical volume lock on
  9086.       the drive via INT 21/AX=440Dh before it can successfully write to
  9087.       the disk with this function
  9088. SeeAlso: AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1Ah
  9089. --------d-1305-------------------------------
  9090. INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
  9091.     AH = 05h
  9092.     DL = hard drive ID
  9093.     ES:BX -> mode select data (see #0168)
  9094. Return: CF set on error
  9095.     CF clear if successful
  9096.     AH = status code (see #0166)
  9097. Notes:    this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to
  9098.       format a SCSI disk with the desired parameters
  9099.     the mode select data below is from the SCSI-1 specification
  9100.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  9101.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  9102. SeeAlso: AH=06h"SCSI",AH=07h"SCSI",INT 4F/AX=8100h
  9103.  
  9104. Format of Future Domain SCSI mode select data:
  9105. Offset    Size    Description    (Table 0168)
  9106.  00h    BYTE    number of bytes of remaining data (12 + vendor unique length)
  9107.  01h    BYTE    reserved (0)
  9108.  02h    BYTE    medium type (0 for hard disk)
  9109.  03h    BYTE    reserved (0)
  9110.  04h    BYTE    block descriptor length (8)
  9111.  05h    BYTE    density code (0 for hard disk)
  9112.  06h  3 BYTEs    (big-endian) number of blocks (000000h for entire disk)
  9113.  09h    BYTE    reserved (0)
  9114.  0Ah  3 BYTEs    (big-endian) block length (512 standard, or 256)
  9115.  0Dh    ???    vendor-specific parameter bytes (optional)
  9116. --------d-13057FSI324D-----------------------
  9117. INT 13 - 2M - FORMAT TRACK
  9118.     AX = 057Fh
  9119.     SI = 324Dh ("2M")
  9120.     CH = track number
  9121.     DH = head number
  9122.     DL = drive number
  9123.     ES:BX -> boot sector of future 2M diskette
  9124. Return: CF set on error
  9125.     CF clear if successful
  9126.     AH = status (see #0166)
  9127. Program: 2M is a TSR developed by Ciriaco Garcia de Celis to support
  9128.       non standard diskettes with 820-902/1476-1558K (5.25 DD/HD)
  9129.       and 984-1066/1804-1886K/3608-3772K (3.5 DD/HD/ED)
  9130. Notes:    it is not necessary to call AH=17h or AH=18h first (will be ignored)
  9131.     the diskette format must always begin on cylinder 0 head 0
  9132.     the boot sector can be obtained from an already-formatted 2M diskette
  9133.       (by calling AH=02h with head number 00h in 2M v1.x and with head
  9134.       number 80h for 2M v2+)
  9135.     the installation check for 2M must search for a "CiriSOFT:2M:1.3" or
  9136.       "CiriSOFT:2MX:3.0" or similar (recomended ":2M:", ":2MX:", or ":2MB:"
  9137.       substrings) in CiriSOFT TSR interface
  9138.     since 2M v2.0, the BOOT sector is emulated using the first physical
  9139.       sector of FAT2; the second-sixth physical sectors of FAT2 in HD or ED
  9140.       diskettes store the SuperBOOT code. To skip the FAT2 emulation (using
  9141.       FAT1) of 2M, in order to read the SuperBOOT code, head number must be
  9142.       80h-81h instead 0-1 (bit 7 active) in standard read/write functions.
  9143.       This lets diskcopy programs format 2M target diskettes copying
  9144.       SuperBOOT code. If the target diskette is already 2MF formatted
  9145.       (containing boot code) this trick it is not necessary.
  9146.     when using STV technology (offset 65 of boot sector equal to 1) it is
  9147.       necessary to write the full track before formatting (except track 0
  9148.       side 0) to complete the format and skip future CRC errors on read; in
  9149.       track 0 side 1 the head used must be 81h instead 1. Diskcopy programs
  9150.       may do a format-write-verify sequential phases to improve performance
  9151. SeeAlso: AH=05h"FLOPPY",AH=18h/CX=5055h,INT 2F"CiriSOFT"
  9152. --------B-1306-------------------------------
  9153. INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
  9154.     AH = 06h
  9155.     AL = interleave value
  9156.     CH = cylinder number (bits 8,9 in high bits of CL)
  9157.     CL = sector number
  9158.     DH = head
  9159.     DL = drive
  9160. Return: AH = status code (see #0166)
  9161. Note:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  9162.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  9163.       into bits 6 and 7 of DH
  9164. SeeAlso: AH=05h"FIXED",AH=07h"FIXED"
  9165. --------d-1306-------------------------------
  9166. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING
  9167.     AH = 06h
  9168.     AL = interleave
  9169.          (0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique)
  9170.     DL = hard drive ID
  9171.     DH = defect list info (see #0169)
  9172.     ES:BX -> defect table A, B or C (see #0170,#0171,#0172)
  9173. Return: CF set on error
  9174.     CF clear if successful
  9175.     AH = status code (see #0166)
  9176. Notes:    block addresses must be in ascending order (for table B, cylinder is
  9177.       most significant, byte from index least significant; for table C,
  9178.       cylinder is most significant, sector number least significant)
  9179.     table B defect bytes from index of FFFFFFFFh indicates that the entire
  9180.       track shall be reassigned
  9181.     table C defect sector number of FFFFFFFFh indicates that the entire
  9182.       track shall be reassigned
  9183.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  9184.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  9185. SeeAlso: AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI"
  9186.  
  9187. Bitfields for Future Domain SCSI defect list info:
  9188. Bit(s)    Description    (Table 0169)
  9189.  7-5    drive LUN
  9190.  4    defect list is available
  9191.  3    defect list is complete (erase drive's defect list)
  9192.  2-0    defect table format
  9193.     (000=use defect table A, 100=use defect table B,
  9194.      101=use defect table C)
  9195.  
  9196. Format of Future Domain SCSI defect table A:
  9197. Offset    Size    Description    (Table 0170)
  9198.  00h    WORD    number of bytes remaining in table
  9199.  02h    BYTE    reserved (0)
  9200.  03h    BYTE    reserved (0)
  9201.  04h    WORD    (big-endian) defect list length (4*number of defects)
  9202.  06h  4 DWORDs    (big-endian) defect block addresses
  9203.  
  9204. Format of Future Domain SCSI defect table B:
  9205. Offset    Size    Description    (Table 0171)
  9206.  00h    WORD    number of bytes remaining in table
  9207.  02h    BYTE    reserved (0)
  9208.  03h    BYTE    reserved (0)
  9209.  04h    WORD    (big-endian) defect list length (8*number of defects)
  9210.  06h 8N BYTEs    defect list [array] (see #0173)
  9211.  
  9212. Format of Future Domain SCSI defect table C:
  9213. Offset    Size    Description    (Table 0172)
  9214.  00h    WORD    number of bytes remaining in table
  9215.  02h    BYTE    reserved (0)
  9216.  03h    BYTE    reserved (0)
  9217.  04h    WORD    (big-endian) defect list length (8*number of defects)
  9218.  06h 8N BYTEs    defect list [array] (see #0173)
  9219.  
  9220. Format of Future Domain SCSI defect list entry:
  9221. Offset    Size    Description    (Table 0173)
  9222.  00h  3 BYTEs    (big-endian) cylinder number of defect
  9223.  03h    BYTE    head number of defect
  9224.  04h    DWORD    (big-endian) defect bytes from index
  9225. --------d-1306-------------------------------
  9226. INT 13 - Adaptec AHA-154xA/Bustek BT-542 BIOS - IDENTIFY SCSI DEVICES
  9227.     AH = 06h
  9228. Return: AH = status code (see #0166)
  9229.     CF clear if successful
  9230.         AL = first drive supported
  9231.         (80h nonconcurrent operation, 81h concurrent operation)
  9232.     CF set on error
  9233. Desc:    determine the number of the first supported SCSI drive
  9234. Note:    the return value is 80h when two SCSI drives are supported, 81h if
  9235.       only one SCSI drive is installed
  9236. SeeAlso: AH=08h"PC",#0656 at INT 1A/AX=B102h
  9237. --------d-1306-------------------------------
  9238. INT 13 - V10DISK.SYS - READ DELETED SECTORS
  9239.     AH = 06h
  9240.     AL = number of sectors
  9241.     CH = cylinder number (bits 8,9 in high bits of CL)
  9242.     CL = sector number
  9243.     DH = head
  9244.     DL = drive
  9245.     ES:BX -> buffer
  9246. Return: AH = status code (see #0166)
  9247. Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
  9248. SeeAlso: AH=02h,AH=07h"V10DISK.SYS"
  9249. --------B-1307-------------------------------
  9250. INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
  9251.     AH = 07h
  9252.     AL = interleave value (XT only)
  9253.     ES:BX = 512-byte format buffer (see AH=05h)
  9254.     CH = cylinder number (bits 8,9 in high bits of CL)
  9255.     CL = sector number
  9256.     DH = head
  9257.     DL = drive
  9258. Return: AH = status code (see #0166)
  9259. Note:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  9260.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  9261.       into bits 6 and 7 of DH
  9262. SeeAlso: AH=05h"FIXED",AH=06h"FIXED",AH=1Ah
  9263. --------d-1307-------------------------------
  9264. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
  9265.     AH = 07h
  9266.     AL = interleave (0 = default, 1 = consecutive sectors,
  9267.            2 - 255 = vendor unique)
  9268.     DL = hard drive ID
  9269. Return: CF set on error
  9270.     CF clear if successful
  9271.     AH = status code (see #0166)
  9272. SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED"
  9273. --------d-1307-------------------------------
  9274. INT 13 - V10DISK.SYS - WRITE DELETED SECTORS
  9275.     AH = 07h
  9276.     AL = number of sectors
  9277.     CH = cylinder number (bits 8,9 in high bits of CL)
  9278.     CL = sector number
  9279.     DH = head
  9280.     DL = drive
  9281.     ES:BX -> buffer
  9282. Return: AH = status code (see #0166)
  9283. Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
  9284. SeeAlso: AH=03h,AH=06h"V10DISK.SYS"
  9285. --------B-1308-------------------------------
  9286. INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI)
  9287.     AH = 08h
  9288.     DL = drive (bit 7 set for hard disk)
  9289. Return: CF set on error
  9290.         AH = status (07h) (see #0166)
  9291.     CF clear if successful
  9292.         AH = 00h
  9293.         AL = 00h on at least some BIOSes
  9294.         BL = drive type (AT/PS2 floppies only) (see #0174)
  9295.         CH = low eight bits of maximum cylinder number
  9296.         CL = maximum sector number (bits 5-0)
  9297.          high two bits of maximum cylinder number (bits 7-6)
  9298.         DH = maximum head number
  9299.         DL = number of drives
  9300.         ES:DI -> drive parameter table (floppies only)
  9301. Notes:    may return successful even though specified drive is greater than the
  9302.       number of attached drives of that type (floppy/hard); check DL to
  9303.       ensure validity
  9304.     for systems predating the IBM AT, this call is only valid for hard
  9305.       disks, as it is implemented by the hard disk BIOS rather than the
  9306.       ROM BIOS
  9307.     Toshiba laptops with HardRAM return DL=02h when called with DL=80h,
  9308.       but fail on DL=81h.  The BIOS data at 40h:75h correctly reports 01h.
  9309.     may indicate only two drives present even if more are attached; to
  9310.       ensure a correct count, one can use AH=15h to scan through possible
  9311.       drives
  9312.     for BIOSes which reserve the last cylinder for testing purposes, the
  9313.       cylinder count is automatically decremented
  9314.     on PS/1s with IBM ROM DOS 4, nonexistent drives return CF clear,
  9315.       BX=CX=0000h, and ES:DI = 0000h:0000h
  9316.     the PC-Tools PCFORMAT program requires that AL=00h before it will
  9317.       proceed with the formatting
  9318. SeeAlso: AH=06h"Adaptec",AH=13h"SyQuest",AH=48h,AH=15h,INT 1E
  9319. SeeAlso: INT 41"HARD DISK 0"
  9320.  
  9321. (Table 0174)
  9322. Values for diskette drive type:
  9323.  01h    360K
  9324.  02h    1.2M
  9325.  03h    720K
  9326.  04h    1.44M
  9327.  05h    ??? (reportedly an obscure drive type shipped on some IBM machines)
  9328.     2.88M on some machines (at least AMI 486 BIOS)
  9329.  06h    2.88M
  9330.  10h    ATAPI Removable Media Device
  9331. --------d-1308-------------------------------
  9332. INT 13 - V10DISK.SYS - SET FORMAT
  9333.     AH = 08h
  9334.     AL = number of sectors
  9335.     CH = cylinder number (bits 8,9 in high bits of CL)
  9336.     CL = sector number
  9337.     DH = head
  9338.     DL = drive
  9339. Return: AH = status code (see #0166)
  9340. Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
  9341. Note:    details not available
  9342. SeeAlso: AH=03h,AH=06h"V10DISK.SYS"
  9343. --------y-130800DLF0-------------------------
  9344. INT 13 - SecureDrive - INSTALLATION CHECK
  9345.     AX = 08000h
  9346.     DL = F0h
  9347. Return: AX = EDCBh for version 1.0-1.2
  9348.     AX = EDCCh for version 1.3
  9349.     CX = code segment
  9350.     DX = data address within code segment
  9351. Program: SecureDrive by Mike Ingle <mikeingle@delphi.com> allows you to create
  9352.       an encrypted partition on your harddisk.
  9353. --------B-1309-------------------------------
  9354. INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS)
  9355.     AH = 09h
  9356.     DL = drive (80h for first, 81h for second)
  9357. Return: CF clear if successful
  9358.     CF set on error
  9359.     AH = status (see #0166)
  9360. Notes:    on the PC and XT, this function uses the parameter table pointed at by
  9361.       INT 41
  9362.     on the AT and later, this function uses the parameter table pointed at
  9363.       by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if
  9364.       DL=81h
  9365. SeeAlso: INT 41"HARD DISK 0",INT 46"HARD DISK 1"
  9366. --------B-130A-------------------------------
  9367. INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later)
  9368.     AH = 0Ah
  9369.     AL = number of sectors (01h may be only value supported)
  9370.     CH = low eight bits of cylinder number
  9371.     CL = sector number (bits 5-0)
  9372.          high two bits of cylinder number (bits 7-6)
  9373.     DH = head number
  9374.     DL = drive number (80h = first, 81h = second)
  9375.     ES:BX -> data buffer
  9376. Return: CF clear if successful
  9377.     CF set on error
  9378.     AH = status (see #0166)
  9379.     AL = number of sectors transferred
  9380. Notes:    this function reads in four to seven bytes of error-correcting code
  9381.       along with each sector's worth of information
  9382.     data errors are not automatically corrected, and the read is aborted
  9383.       after the first sector with an ECC error
  9384.     used for diagnostics only on PS/2 systems; IBM officially classifies
  9385.       this function as optional
  9386. SeeAlso: AH=02h,AH=0Bh,MEM 0040h:0074h
  9387. --------B-130B-------------------------------
  9388. INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later)
  9389.     AH = 0Bh
  9390.     AL = number of sectors (01h may be only value supported)
  9391.     CH = low eight bits of cylinder number
  9392.     CL = sector number (bits 5-0)
  9393.          high two bits of cylinder number (bits 7-6)
  9394.     DH = head number
  9395.     DL = drive number (80h = first, 81h = second)
  9396.     ES:BX -> data buffer
  9397. Return: CF clear if successful
  9398.     CF set on error
  9399.     AH = status (see #0166)
  9400.     AL = number of sectors transferred
  9401. Notes:    each sector's worth of data must be followed by four to seven bytes of
  9402.       error-correction information
  9403.     used for diagnostics only on PS/2 systems; IBM officially classifies
  9404.       this function as optional
  9405. SeeAlso: AH=03h,AH=0Ah,MEM 0040h:0074h
  9406. --------B-130C-------------------------------
  9407. INT 13 - HARD DISK - SEEK TO CYLINDER
  9408.     AH = 0Ch
  9409.     CH = low eight bits of cylinder number
  9410.     CL = sector number (bits 5-0)
  9411.         high two bits of cylinder number (bits 7-6)
  9412.     DH = head number
  9413.     DL = drive number (80h = first, 81h = second hard disk)
  9414. Return: CF set on error
  9415.     CF clear if successful
  9416.     AH = status (see #0166)
  9417. SeeAlso: AH=00h,AH=02h,AH=0Ah,AH=47h
  9418. --------B-130D-------------------------------
  9419. INT 13 - HARD DISK - RESET HARD DISKS
  9420.     AH = 0Dh
  9421.     DL = drive number (80h = first, 81h = second hard disk)
  9422. Return: CF set on error
  9423.     CF clear if successful
  9424.     AH = status (see #0166)
  9425. Notes:    reinitializes the hard disk controller, resets the specified drive's
  9426.       parameters, and recalibrates the drive's heads (seek to track 0)
  9427.     for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
  9428.       both the master drive and the slave drive respond to the Reset
  9429.       function that is issued to either drive
  9430.     not for PS/2 ESDI drives
  9431. SeeAlso: AH=00h,INT 21/AH=0Dh
  9432. --------B-130E-------------------------------
  9433. INT 13 - HARD DISK - READ SECTOR BUFFER (XT only)
  9434.     AH = 0Eh
  9435.     DL = drive number (80h = first, 81h = second hard disk)
  9436.     ES:BX -> buffer
  9437. Return: CF set on error
  9438.     CF clear if successful
  9439.     AH = status code (see #0166)
  9440. Notes:    transfers controller's sector buffer.  No data is read from the drive
  9441.     used for diagnostics only on PS/2 systems
  9442. SeeAlso: AH=0Ah
  9443. --------B-130F-------------------------------
  9444. INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only)
  9445.     AH = 0Fh
  9446.     DL = drive number (80h = first, 81h = second hard disk)
  9447.     ES:BX -> buffer
  9448. Return: CF set on error
  9449.     CF clear if successful
  9450.     AH = status code (see #0166)
  9451. Notes:    does not write data to the drive
  9452.     should be called before formatting to initialize an XT-type
  9453.       controller's sector buffer
  9454.     used for diagnostics only on PS/2 systems
  9455. SeeAlso: AH=0Bh
  9456. --------B-1310-------------------------------
  9457. INT 13 - HARD DISK - CHECK IF DRIVE READY
  9458.     AH = 10h
  9459.     DL = drive number (80h = first, 81h = second hard disk)
  9460. Return: CF set on error
  9461.     CF clear if successful
  9462.     AH = status (see #0166 at AH=01h)
  9463. SeeAlso: AH=11h
  9464. --------B-1311-------------------------------
  9465. INT 13 - HARD DISK - RECALIBRATE DRIVE
  9466.     AH = 11h
  9467.     DL = drive number (80h = first, 81h = second hard disk)
  9468. Return: CF set on error
  9469.     CF clear if successful
  9470.     AH = status (see #0166 at AH=01h)
  9471. Note:    causes hard disk controller to seek the specified drive to cylinder 0
  9472. SeeAlso: AH=00h,AH=0Ch,AH=10h,AH=19h"FIXED DISK",MEM 0040h:003Eh
  9473. --------B-1312-------------------------------
  9474. INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
  9475.     AH = 12h
  9476.     DL = drive number (80h = first, 81h = second hard disk)
  9477. Return: CF set on error
  9478.     CF clear if successful
  9479.     AH = status code (see #0166 at AH=01h)
  9480.     AL = 00h
  9481. SeeAlso: AH=13h,AH=14h
  9482. --------d-1312-------------------------------
  9483. INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
  9484.     AH = 12h
  9485.     DL = hard drive ID
  9486. Return: CF set on error
  9487.     CF clear if successful
  9488.     AH = status code (see #0166 at AH=01h)
  9489. Notes:    available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
  9490.     if the given drive is a SCSI device, the SCSI Stop Unit command is sent
  9491.       and either "Disk prepared for shipping" or "Disk Stop command failed"
  9492.       is displayed
  9493.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  9494.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  9495. --------d-1312-------------------------------
  9496. INT 13 - SyQuest - START/STOP SCSI DISK
  9497.     AH = 12h
  9498.     AL = subfunction
  9499.         00h start disk
  9500.         01h stop disk
  9501.     CX = wait flag
  9502.         00h wait for ready
  9503.         01h don't wait for ready
  9504.     DL = hard drive ID (bit 7 for hard disks must be set)
  9505. Return: CF set on error
  9506.     CF clear if successful
  9507.     AH = status
  9508.         00h successful
  9509.         01h invalid function request
  9510.         80h timeout
  9511. SeeAlso: AH=12h"Future Domain",AH=13h"SyQuest"
  9512. --------B-1313-------------------------------
  9513. INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS)
  9514.     AH = 13h
  9515.     DL = drive number (80h = first, 81h = second hard disk)
  9516. Return: CF set on error
  9517.     CF clear if successful
  9518.     AH = status code (see #0166 at AH=01h)
  9519.     AL = 00h
  9520. SeeAlso: AH=12h"HARD DISK",AH=14h"HARD DISK"
  9521. --------d-1313-------------------------------
  9522. INT 13 - SyQuest - READ DRIVE PARAMATERS (for DOS 5+)
  9523.     AH = 13h
  9524.     DL = drive ID (bit 7 set for hard disks)
  9525. Return: CF set on error
  9526.         AH = status (07h) (see #0166 at AH=01h)
  9527.     CF clear if successful
  9528.         AH = 00h
  9529.         BL = drive type (AT/PS2 floppies only) (see #0174)
  9530.         CH = low eight bits of maximum cylinder number
  9531.         CL = maximum sector number (bits 5-0)
  9532.          high two bits of maximum cylinder number (bits 7-6)
  9533.         DH = maximum head number
  9534.         DL = number of drives
  9535.         ES:DI -> drive parameter table (floppies only)
  9536. Notes:    the return values are identical to the standard INT 13/AH=08h, but the
  9537.       number of drives is not limited to 2, so
  9538.     scanning all possible drive numbers with the Read DASD Type call
  9539.       (AH=15h) should generally be preferred to determine the number of
  9540.       drives attached to the system.
  9541. SeeAlso: AH=08h"PC",AH=12h"SyQuest",AH=15h,AH=59h"SyQuest"
  9542. --------B-1314-------------------------------
  9543. INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC
  9544.     AH = 14h
  9545. Return: CF set on error
  9546.     CF clear if successful
  9547.     AH = status code (see #0166 at AH=01h)
  9548.     AL = 00h
  9549. SeeAlso: AH=12h,AH=13h
  9550. --------B-1315-------------------------------
  9551. INT 13 - DISK - GET DISK TYPE (XT 1/10/86 or later,XT286,AT,PS)
  9552.     AH = 15h
  9553.     DL = drive number (bit 7 set for hard disk)
  9554. Return: CF clear if successful
  9555.         AH = type code
  9556.         00h no such drive
  9557.         01h floppy without change-line support
  9558.         02h floppy (or other removable drive) with change-line support
  9559.         03h hard disk
  9560.             CX:DX = number of 512-byte sectors
  9561.     CF set on error
  9562.         AH = status (see #0166 at AH=01h)
  9563. Note:    SyQuest can report type 01h or 02h for 'hard disks', since its media
  9564.       is removable
  9565. SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI"
  9566. --------B-1316-------------------------------
  9567. INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1/10/86 or later,XT286,AT,PS)
  9568.     AH = 16h
  9569.     DL = drive number (00h-7Fh)
  9570. Return: CF clear if change line inactive
  9571.         AH = 00h (disk not changed)
  9572.     CF set if change line active
  9573.         AH = status
  9574.         01h invalid command (SyQuest)
  9575.         06h change line active or not supported
  9576.         80h drive not ready or not present
  9577. Notes:    call AH=15h first to determine whether the drive supports a change
  9578.       line
  9579.     this call also clears the media-change status, so that a disk change
  9580.       is only reported once
  9581. BUG:    some versions of Award 386 Modular BIOS and AMI BIOS fail to clear
  9582.       the media-change status
  9583. SeeAlso: AH=15h,AH=49h
  9584. --------B-1317-------------------------------
  9585. INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
  9586.     AH = 17h
  9587.     AL = format type
  9588.         01h = 320/360K disk in 360K drive
  9589.         02h = 320/360K disk in 1.2M drive
  9590.         03h = 1.2M disk in 1.2M drive
  9591.         04h = 720K disk in 720K or 1.44M drive
  9592.     DL = drive number
  9593. Return: CF set on error
  9594.     CF clear if successful
  9595.     AH = status (see #0166 at AH=01h)
  9596. Note:    this function does not handle 1.44M drives; use AH=18h instead
  9597. SeeAlso: AH=15h,AH=18h
  9598. --------d-131700-----------------------------
  9599. INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE
  9600.     AX = 1700h
  9601.     CL = length of buffer
  9602.     DL = hard drive ID
  9603.     ES:BX -> buffer for info (see #0175)
  9604. Return: CF clear if successful
  9605.         CH = number of bytes returned in buffer???
  9606.     CF set on error
  9607.         AH = status code (see #0166 at AH=01h)
  9608. Notes:    this function is not available with 8-bit controller ROM versions < 7.0
  9609.     information block bytes 5-n are vendor-specific in older SCSI devices
  9610.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  9611.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  9612. SeeAlso: AH=18h"SCSI",AH=1Bh"SCSI"
  9613.  
  9614. Format of Future Domain SCSI inquiry information block:
  9615. Offset    Size    Description    (Table 0175)
  9616.  00h    BYTE    device type
  9617.         bits 0-4: peripheral device type (see #0176)
  9618.         bits 5-7: peripheral qualifier (see #0177)
  9619.  01h    BYTE    device type modifier
  9620.         bits 0-6: device type modifier
  9621.         bit 7: removable medium
  9622.  02h    BYTE    SCSI version (see #0178)
  9623.  03h    BYTE    data format/capabilities (see #0179)
  9624.  04h    BYTE    additional data length (total remaining bytes)
  9625.  05h  2 BYTEs    reserved
  9626.  07h    BYTE    device capabilities (see #0180)
  9627.  08h  8 BYTEs    vendor identification (space-padded ASCII)
  9628.  10h  8 BYTEs    product identification (space-padded ASCII)
  9629.  20h  4 BYTEs    product revision level (space-padded ASCII)
  9630.  24h 20 BYTEs    vendor specific
  9631.  38h 40 BYTEs    reserved
  9632.  60h    var    vendor specific parameters
  9633.  
  9634. (Table 0176)
  9635. Values for Future Domain SCSI peripheral device type:
  9636.  00h    direct-access device (e.g., magnetic disk)
  9637.  01h    sequential-access device (e.g., magnetic tape)
  9638.  02h    printer device
  9639.  03h    processor device
  9640.  04h    write-once device (e.g., some optical disks)
  9641.  05h    CD-ROM device
  9642.  06h    scanner device
  9643.  07h    optical memory device (e.g., some optical disks)
  9644.  08h    medium changer device (e.g., jukeboxes)
  9645.  09h    communications device
  9646.  0Ah    (defined by ASC IT8)
  9647.  0Bh    (defined by ASC IT8)
  9648.  0Ch-1Eh reserved
  9649.  1Fh    unknown or no device type
  9650.  
  9651. (Table 0177)
  9652. Values for Future Domain SCSI peripheral qualifier:
  9653.  000b    device is currently connected to this logical unit and available
  9654.  001b    target is capable of supporting the specified peripheral, but the
  9655.       physical device is not currently connected to this logical unit
  9656.  010b    reserved
  9657.  011b    target can't support a physical device on this logical unit
  9658.  1xxb    vendor specific
  9659.  
  9660. Bitfields for Future Domain SCSI version:
  9661. Bit(s)    Description    (Table 0178)
  9662.  0-2    ANSI-approved version
  9663.     000 device might or might not comply to ANSI standard
  9664.     001 device complies to ANSI SCSI-1
  9665.     010 device complies to ANSI SCSI-2
  9666.     other reserved
  9667.  3-5    ECMA version
  9668.  6-7    ISO version
  9669.  
  9670. Bitfields for Future Domain SCSI data format/capabilities:
  9671. Bit(s)    Description    (Table 0179)
  9672.  0-2    response data format
  9673.     000 information block is as specified in SCSI-1
  9674.     001 information block is as specified in CCS
  9675.     010 information block is as specified in SCSI-2
  9676.     other reserved
  9677.  4-5    reserved
  9678.  6    terminate I/O process supported
  9679.  7    asynchronous event notification supported
  9680.  
  9681. Bitfields for Future Domain SCSI device capabilities:
  9682. Bit(s)    Description    (Table 0180)
  9683.  0    device responds to RESET with a hard RESET
  9684.  1    tagged command queuing supported
  9685.  2    reserved
  9686.  3    linked commands supported
  9687.  4    synchronous data transfer supported
  9688.  5    16-transfers supported
  9689.  6    32-transfers supported
  9690.  7    relative addressing supported
  9691. --------B-1318-------------------------------
  9692. INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
  9693.     AH = 18h
  9694.     DL = drive number
  9695.     CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
  9696.     CL = sectors per track (bits 0-5)
  9697.          top 2 bits of highest cylinder number (bits 6,7)
  9698. Return: AH = status
  9699.         00h requested combination supported
  9700.         01h function not available
  9701.         0Ch not supported or drive type unknown
  9702.         80h there is no disk in the drive
  9703.     ES:DI -> 11-byte parameter table (see #0960 at INT 1E)
  9704. Note:    this function does not set the INT 1E vector to point at the returned
  9705.       parameter table; it is the caller's responsibility to do so
  9706. SeeAlso: AH=05h,AH=07h,AH=17h,INT 1E
  9707. --------d-1318-------------------------------
  9708. INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
  9709.     AH = 18h
  9710.     DL = hard drive ID
  9711. Return: CF set on error
  9712.         AH = status code (see #0166 at AH=01h)
  9713.     CF clear if successful
  9714.         AX = 4321h (magic number)
  9715.         CX = controller family code (see #0181)
  9716.         ---if family code=0200h
  9717.         DH = number of exclusively ROM-controlled SCSI devices
  9718.         DL = canonical SCSI device number for specified drive
  9719.         ---if family code <> 0200h
  9720.         BH = number of exclusively ROM-controlled SCSI devices
  9721.         BL = canonical SCSI device number for specified drive
  9722. Notes:    also sets an internal flag (non-resettable) which prevents some
  9723.       controller messages from being displayed, allows writes to
  9724.       removable devices (use caution!), and enables the INT 13 interface
  9725.       for more than one drive (i.e. DL >= 81h) in at least some ROM
  9726.       versions
  9727.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  9728.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  9729. SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT 4F/AX=8100h
  9730.  
  9731. (Table 0181)
  9732. Values for Future Domain SCSI controller family code:
  9733.  0200h    TMC-1680/? (ROM 3.0)
  9734.  0203h    TMC-1650/1660/1670/1680 (ROM 2.0)
  9735.  040Ah    TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A)
  9736.  050Dh    TMC-840/841/880/881 (ROM 5.2D)
  9737.  0700h    TMC-830/850/860/875/885 (ROM 7.0)
  9738. --------d-1318--CX5055-----------------------
  9739. INT 13 - PU_1700.COM - INSTALLATION CHECK
  9740.     AH = 18h
  9741.     CX = 5055h ('PU')
  9742.     DL = 00h
  9743. Return: AX = 7570h ('up') if PU_1700 is installed
  9744. Program: PU_1700 is a BIOS enhancer from PU Service Systems which permits
  9745.       formatting diskettes at higher capacity (1.78M instead of 1.44M)
  9746. SeeAlso: AX=057Fh/SI=324Dh"2M"
  9747. --------d-1318--CXD2C9-----------------------
  9748. INT 13 - XDF.COM - API
  9749.     AH = 18h
  9750.     CX = D2C9h ("R"+80h, "I"+80h = Roger Ivey)
  9751.     DX = 0000h
  9752.     BX = function
  9753.         0000h installation check
  9754.           Return: AH = 0Ch
  9755.               CX = 7269h ("ri" = Roger Ivey)
  9756.               ES = segment of driver
  9757.               CF set
  9758.         2F64h ("/d") disable the driver
  9759.           Return: AH = 0Ch
  9760.               ES:BX = pointer to activation flag (it is set to 0:
  9761.                   set it to 1 to enable the driver again)
  9762.               CX = 7269h
  9763.               CF set
  9764.         2F75h ("/u") unload the driver (restore interrupts & free memory)
  9765.           Return: AH = 0Ch
  9766.               DL = 55h ("U") if successful
  9767.                  = 00h       if fails
  9768.               CX = 7269h
  9769.               ES = segment of driver
  9770.               CF set
  9771.               AL, BX, DH, and DI destroyed
  9772. Program: XDF is a TSR provided with PC-DOS 7.0 to support XDF 1.84M disks,
  9773.       developed by Roger D. Ivey
  9774. Note:    After disabling or enabling the driver, a disk change must be performed
  9775.       or simulated to reset the driver.
  9776. --------B-1319-------------------------------
  9777. INT 13 - FIXED DISK - PARK HEADS ON ESDI DRIVE (XT286,PS)
  9778.     AH = 19h
  9779.     DL = drive
  9780. Return: CF set on error
  9781.     CF clear if successful
  9782.     AH = status (see #0166 at AH=01h)
  9783. SeeAlso: AH=11h
  9784. --------d-1319-------------------------------
  9785. INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
  9786.     AH = 19h
  9787.     DL = hard drive ID
  9788. Return: CF set on error
  9789.         AH = status code (see #0166 at AH=01h)
  9790.     CF clear if successful
  9791.         AH = disk type (03h = fixed disk)
  9792.         CX:DX = number of 512-byte sectors
  9793. Notes:    sends SCSI Read Capacity command to get number of logical blocks and
  9794.       adjusts the result for 512-byte sectors
  9795.     displays either "Error in Read Capacity Command" or "nnn Bytes per
  9796.       sector" (nnn=256 or 512, the only sizes supported in the translation
  9797.       code)
  9798.     should probably be called when a removable device has its media changed
  9799.     returns the same values as AH=15h
  9800.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  9801.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  9802. SeeAlso: AH=15h,AH=1Ah,INT 4F/AX=8100h
  9803. --------d-131A-------------------------------
  9804. INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
  9805.     AH = 1Ah
  9806.     AL = defect table entry count
  9807.     CL = format modifiers (see #0182)
  9808.     DL = drive (80h,81h)
  9809.     ES:BX -> defect table (see #0183), ignored if AL=00h
  9810. Return: CF set on error
  9811.     CF clear if successful
  9812.     AH = status (see #0166 at AH=01h)
  9813. Note:    if periodic interrupt selected, INT 15/AH=0Fh is called after each
  9814.       cylinder is formatted
  9815. SeeAlso: AH=07h,INT 15/AH=0Fh
  9816.  
  9817. Bitfields for ESDI format modifiers:
  9818. Bit(s)    Description    (Table 0182)
  9819.  4    generate periodic interrupt
  9820.  3    perform surface analysis
  9821.  2    update secondary defect map
  9822.  1    ignore secondary defect map
  9823.  0    ignore primary defect map
  9824.  
  9825. Format of defect table entry [array]:
  9826. Offset    Size    Description    (Table 0183)
  9827.  00h  3 BYTEs    relative sector address (little-endian)
  9828.  03h    BYTE    flags and defect count
  9829.         bit 7: last logical sector on track
  9830.         bit 6: first logical sector on track
  9831.         bit 5: last logical sector on cylinder
  9832.         bit 4: logical sectors are pushed onto next track
  9833.         bits 3-0: number of defects pushed from previous cylinder
  9834. --------d-131A-------------------------------
  9835. INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
  9836.     AH = 1Ah
  9837.     CH = track (bits 8,9 in high bits of CL)
  9838.     CL = sector (01h to number of sectors/track for drive)
  9839.     DH = head
  9840.     DL = hard drive ID
  9841. Return: CF set on error
  9842.     AH = status code (see #0166 at AH=01h)
  9843.     CX:DX = logical block number of last quickly-accessible block after
  9844.         given block
  9845. Notes:    sends SCSI Read Capacity command with the PMI bit set to obtain the
  9846.       logical block address of the last block after which a substantial
  9847.       delay in data transfer will be encountered (usually the last block
  9848.       on the current cylinder).  No translation to 512 byte sectors is
  9849.       performed on the result if data is stored on the disk in other than
  9850.       512 byte sectors.
  9851.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  9852.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  9853. SeeAlso: AH=15h,AH=19h"SCSI"
  9854. --------d-131B-------------------------------
  9855. INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
  9856.     AH = 1Bh
  9857.     AL = number of sectors to read
  9858.     DL = drive
  9859.     ES:BX -> buffer for manufacturing header (defect list)
  9860. Return: CF set on error
  9861.     CF clear if successful
  9862.     AH = status
  9863. Note:    manufacturing header format (Defect Map Record format) can be found
  9864.       in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
  9865.     the first sector read contains the manufacturing header with the number
  9866.       of defect entries and the beginning of the defect map; the remaining
  9867.       sectors contain the remainder of the defect map
  9868. --------d-131B-------------------------------
  9869. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
  9870.     AH = 1Bh
  9871.     DL = hard drive ID
  9872. Return: CF set on error
  9873.         AH = status code (see #0166 at AH=01h)
  9874.     CF clear if successful
  9875.         ES:BX -> SCSI disk information block (see #0184)
  9876. Notes:    also sets a non-resettable flag which prevents some controller messages
  9877.       from being displayed
  9878.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  9879.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  9880. SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
  9881.  
  9882. Format of Future Domain SCSI disk information block:
  9883. Offset    Size    Description    (Table 0184)
  9884.  00h    BYTE    drive physical information (see #0185)
  9885.  01h    WORD    translated number of cylinders
  9886.  03h    BYTE    translated number of heads
  9887.  04h    BYTE    translated number of sectors per track (17, 34, or 63)
  9888.  05h    BYTE    drive address
  9889.         bits 0-2: logical unit number
  9890.         bits 3-5: device number
  9891.  06h    BYTE    01h at initialization
  9892.  07h    BYTE    sense code byte 00h, or extended sense code byte 0Ch
  9893.  08h    BYTE    00h
  9894.  09h    BYTE    00h or extended sense code byte 02h (sense key)
  9895.  0Ah    BYTE    00h
  9896.  0Bh 10 BYTEs    copy of Command Descriptor Block (CDB) (see #2907,#2908)
  9897.  15h    DWORD    translated number of sectors on device
  9898.  
  9899. Bitfields for Future Domain SCSI device physical information:
  9900. Bit(s)    Description    (Table 0185)
  9901.  0    ???
  9902.  1    device uses parity
  9903.  2    256 bytes per sector instead of 512
  9904.  3    don't have capacity yet???
  9905.  4    disk is removable
  9906.  5    logical unit number is not present
  9907. --------d-131C-------------------------------
  9908. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
  9909.     AH = 1Ch
  9910.     DL = hard drive ID (any valid SCSI hard disk)
  9911. Return: CF set on error
  9912.         AH = status code (see #0166 at AH=01h)
  9913.     CF clear if successful
  9914.         ES:BX -> first byte of free RAM on controller
  9915. Notes:    the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
  9916.       to 1BFFh on-board the controller for storing drive information and
  9917.       controller status; ES:BX points to the first byte available for other
  9918.       uses
  9919.     ES contains the segment at which the controller resides; the
  9920.       controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
  9921. SeeAlso: AH=1Bh"SCSI"
  9922. --------d-131C-------------------------------
  9923. INT 13 U - ESDI FIXED DISK - ???
  9924.     AH = 1Ch
  9925.     AL = subfunction (01h-06h)
  9926.     DL = drive (80h,81h)
  9927.     ???
  9928. Return: ???
  9929. Note:    these functions perform a controller command 0612h without DMA
  9930. SeeAlso: AX=1C08h,PORT 3510h"ESDI"
  9931. --------d-131C08-----------------------------
  9932. INT 13 U - ESDI FIXED DISK - GET COMMAND COMPLETION STATUS
  9933.     AX = 1C08h
  9934.     DL = drive (80h,81h)
  9935.     ES:BX -> buffer for Command Complete Status Block (see #0186)
  9936. Return: CF set on error
  9937.     CF clear if successful
  9938.     AH = status (see #0166 at AH=01h)
  9939. SeeAlso: AX=1C09h,AX=1C0Ah,PORT 3510h"ESDI"
  9940.  
  9941. Format of ESDI Command Complete Status Block:
  9942. Offset    Size    Description    (Table 0186)
  9943.  00h    BYTE    07h
  9944.  01h    BYTE    size of block in words (07h)
  9945.  02h    BYTE    command error code (see #0187)
  9946.  03h    BYTE    command status code (see #0188)
  9947.  04h    BYTE    device error code, group 1 (see #0189)
  9948.  05h    BYTE    device error flags, group 2 (see #0190)
  9949.  06h    WORD    number of unprocessed sectors due to abnormal termination
  9950.  08h    DWORD    last Relative Sector Address processed by command
  9951.  0Ch    WORD    number of sectors corrected by ECC codes
  9952.  
  9953. (Table 0187)
  9954. Values for ESDI command error code:
  9955.  00h    successful
  9956.  01h    parameter invalid
  9957.  02h    unknown function
  9958.  03h    unsupported command
  9959.  04h    command cancelled
  9960.  05h    unknown function
  9961.  06h    controller diagnostics failed
  9962.  07h    formatting failed
  9963.  08h    format error in primary map
  9964.  09h    format error in secondary map
  9965.  0Ah    diagnostic failure during formatting
  9966.  0Bh    warning: secondary map too large during formatting
  9967.  0Ch    warning: non-zero defect
  9968.  0Dh    system checksum error during formatting
  9969.  0Eh    warning: incompatible device
  9970.  0Fh    warning: push table overflowed
  9971.  10h    warning: more than 15 sectors pushed to next cylinder
  9972.  11h    internal hardware error
  9973.  12h    warning: errors found while verifying sectors
  9974.  13h    invalid device
  9975.  FFh    device error
  9976.  
  9977. (Table 0188)
  9978. Values for ESDI command status code:
  9979.  01h    successful
  9980.  03h    successful after ECC
  9981.  05h    successful after retries
  9982.  06h    format partially completed
  9983.  07h    successful after ECC and retries
  9984.  08h    command completed with warning (see #0187)
  9985.  09h    abort complete
  9986.  0Ah    reset complete
  9987.  0Bh    data transfer ready (no status block)
  9988.  0Ch    command completed with failure (see #0189,#0190)
  9989.  0Dh    DMA error
  9990.  0Eh    command block error (see #0187)
  9991.  0Fh    bad attention code
  9992. SeeAlso: #0189
  9993.  
  9994. (Table 0189)
  9995. Values for ESDI device error code, group 1:
  9996.  00h    successful
  9997.  01h    seek fault detected by device
  9998.  02h    interface fault
  9999.  03h    sector ID not found
  10000.  04h    disk not formatted
  10001.  05h    unrecoverable ECC error
  10002.  06h    ECC error in sector ID
  10003.  07h    invalid relative sector address
  10004.  08h    timeout
  10005.  09h    sector defective
  10006.  0Ah    disk changed (removable media)
  10007.  0Bh    selection error
  10008.  0Ch    write protected (removable media)
  10009.  0Dh    write fault
  10010.  0Eh    read fault
  10011.  0Fh    no index or sector pulse
  10012.  10h    device not ready
  10013.  11h    seek error detected by adapter
  10014.  12h    bad format
  10015.  13h    volume overflow
  10016.  14h    data address mark not found
  10017.  15h    sector ID not found
  10018.  16h    missing device configuration data
  10019.  17h    first/last relative sector flags missing
  10020.  18h    track empty
  10021.  81h    timeout while waiting for stop
  10022.  82h    timeout while waiting for end of data transfer
  10023.  84h    stopped awaiting data transfer during formatting
  10024.  85h    timeout while waiting for head switch
  10025.  86h    timeout while awaiting DMA completion
  10026. SeeAlso: #0188,#0190
  10027.  
  10028. Bitfields for ESDI device error flags, group 2:
  10029. Bit(s)    Description    (Table 0190)
  10030.  7-5    unused
  10031.  4    ready
  10032.  3    selected
  10033.  2    write fault
  10034.  1    on track 0
  10035.  0    seek/command complete
  10036. SeeAlso: #0189
  10037. --------d-131C09-----------------------------
  10038. INT 13 U - ESDI FIXED DISK - GET DEVICE STATUS
  10039.     AX = 1C09h
  10040.     DL = drive (80h,81h)
  10041.     ES:BX -> buffer for Device Status Block (see #0191)
  10042. Return: CF set on error
  10043.     CF clear if successful
  10044.     AH = status (see #0166 at AH=01h)
  10045. SeeAlso: AX=1C08h,AX=1C0Ah,PORT 3510h"ESDI"
  10046.  
  10047. Format of ESDI Device Status Block:
  10048. Offset    Size    Description    (Table 0191)
  10049.  00h    BYTE    08h
  10050.  01h    BYTE    number of words in block (09h)
  10051.  02h    BYTE    error flags
  10052.  03h    BYTE    unused
  10053.  04h    BYTE    command error code (see #0187)
  10054.  05h    BYTE    command status code (see #0188)
  10055.  06h    WORD    ESDI standard status
  10056.  08h  5 WORDs    ESDI vendor-specific status codes
  10057. --------d-131C0A-----------------------------
  10058. INT 13 U - ESDI FIXED DISK - GET DEVICE CONFIGURATION
  10059.     AX = 1C0Ah
  10060.     DL = drive (80h,81h)
  10061.     ES:BX -> buffer for Drive Configuration Status Block (see #0192)
  10062. Return: CF set on error
  10063.     CF clear if successful
  10064.     AH = status (see #0166 at AH=01h)
  10065. Note:    device configuration format can be found in IBM ESDI Fixed Disk Drive
  10066.       Adapter/A Technical Reference
  10067. SeeAlso: AX=1C08h,AX=1C0Bh,AX=1C0Ch
  10068.  
  10069. Format of ESDI Drive Configuration Status Block:
  10070. Offset    Size    Description    (Table 0192)
  10071.  00h    BYTE    09h
  10072.  01h    BYTE    number of words in block (06h)
  10073.  02h    BYTE    flags
  10074.  03h    BYTE    number of spare sectors per cylinder
  10075.  04h    DWORD    total number of usable sectors
  10076.  08h    WORD    total number of cylinders
  10077.  0Ah    BYTE    tracks per cylinder
  10078.  0Bh    BYTE    sectors per track
  10079. --------d-131C0B-----------------------------
  10080. INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
  10081.     AX = 1C0Bh
  10082.     ES:BX -> buffer for Controller Configuration Status Block (see #0193)
  10083. Return: CF set on error
  10084.     CF clear if successful
  10085.     AH = status (see #0166 at AH=01h)
  10086. SeeAlso: AX=1C0Ch
  10087.  
  10088. Format of ESDI Controller Configuration Status Block:
  10089. Offset    Size    Description    (Table 0193)
  10090.  00h    BYTE    E9h
  10091.  01h    BYTE    number of words in block (06h)
  10092.  02h    WORD    unused (0000h)
  10093.  04h    DWORD    controller microcode revision level
  10094.  08h  2 WORDs    unused (0000h)
  10095. --------d-131C0C-----------------------------
  10096. INT 13 U - ESDI FIXED DISK - GET POS INFORMATION
  10097.     AX = 1C0Ch
  10098.     ES:BX -> buffer for POS Information Status Block (see #0194)
  10099. Return: CF set on error
  10100.     CF clear if successful
  10101.     AH = status (see #0166 at AH=01h)
  10102. SeeAlso: AX=1C0Bh
  10103.  
  10104. Format of ESDI POS Information Status Block:
  10105. Offset    Size    Description    (Table 0194)
  10106.  00h    BYTE    EAh
  10107.  01h    BYTE    number of words in block (05h)
  10108.  02h    WORD    magic value FFDDh
  10109.  04h    BYTE    POS register 3
  10110.  05h    BYTE    POS register 2
  10111.  06h    BYTE    POS register 5 (unused, FFh)
  10112.  07h    BYTE    POS register 4 (unused, FFh)
  10113.  08h    BYTE    POS register 7 (unused, FFh)
  10114.  09h    BYTE    POS register 6 (unused, FFh)
  10115. --------d-131C0D-----------------------------
  10116. INT 13 U - ESDI FIXED DISK - ???
  10117.     AX = 1C0Dh
  10118.     DL = drive (80h,81h)
  10119.     ???
  10120. Return: ???
  10121. Note:    invokes controller command 0614h without DMA
  10122. SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"
  10123. --------d-131C0E-----------------------------
  10124. INT 13 U - ESDI FIXED DISK - TRANSLATE RBA TO ABA
  10125.     AX = 1C0Eh
  10126.     CH = low 8 bits of cylinder number
  10127.     CL = sector number, high two bits of cylinder number in bits 6 and 7
  10128.     DH = head number
  10129.     DL = drive number (80h,81h)
  10130.     ES:BX -> ABA number
  10131. Return: CF set on error
  10132.     CF clear if successful
  10133.     AH = status (see #0166 at AH=01h)
  10134. Note:    ABA (absolute block address) format can be found in IBM ESDI Adapter
  10135.       Technical Reference by using its Device Configuration Status Block
  10136. SeeAlso: AX=1C08h,AX=1C0Fh,PORT 3510h"ESDI"
  10137. --------d-131C0F-----------------------------
  10138. INT 13 U - ESDI FIXED DISK - ???
  10139.     AX = 1C0Fh
  10140.     DL = drive (80h,81h)
  10141.     ???
  10142. Return: ???
  10143. Note:    invokes controller command 0614h without DMA
  10144. SeeAlso: AH=1Ch"ESDI",AX=1C0Dh,AX=1C12h,PORT 3510h"ESDI"
  10145. --------d-131C12-----------------------------
  10146. INT 13 U - ESDI FIXED DISK - ???
  10147.     AX = 1C12h
  10148.     DL = drive (80h,81h)
  10149.     ???
  10150. Return: ???
  10151. Note:    invokes controller command 0612h without DMA
  10152. SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"
  10153. --------c-131D-------------------------------
  10154. INT 13 - IBMCACHE.SYS - CACHE STATUS
  10155.     AH = 1Dh
  10156.     AL = subfunction
  10157.         01h get status record
  10158.         DL = drive???
  10159.         Return: ES:BX -> status record (see #0195)
  10160.             CF set on error
  10161.                 AH = error code
  10162.         02h set cache status
  10163.         ES:BX -> status record (see #0195)
  10164.         DL = drive???
  10165.         Return: CF set on error
  10166.  
  10167. Format of IBMCACHE.SYS status record:
  10168. Offset    Size    Description    (Table 0195)
  10169.  00h    DWORD    total number of read requests
  10170.  04h    DWORD    total number of hits
  10171.  08h    DWORD    number of physical disk reads
  10172.  0Ch    DWORD    total number of sectors requested by physical disk reads
  10173.  10h  6 BYTEs    ???
  10174.  16h    DWORD    pointer to start of error list (see #0196)
  10175.  1Ah    DWORD    pointer to end of error list
  10176.  1Eh    WORD    ???
  10177.  20h    BYTE    using extended memory if nonzero
  10178.  21h    BYTE    ???
  10179.  22h  4 BYTEs    ASCII version number
  10180.  26h    WORD    cache size in KB
  10181.  28h    WORD    sectors per page
  10182.  
  10183. Format of IBMCACHE.SYS error list:
  10184. Offset    Size    Description    (Table 0196)
  10185.  00h    DWORD    relative block address of bad page
  10186.  04h    BYTE    drive
  10187.  05h    BYTE    sector bit-map
  10188.  06h    WORD    next error
  10189. --------d-131F-------------------------------
  10190. INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT
  10191.     AH = 1Fh
  10192.     AL = subfunction
  10193.         00h allow media removal
  10194.         01h prevent media removal (lock door)
  10195.     DL = drive ID (bit 7 set for hard disks)
  10196. Return: CF clear if successful
  10197.         AH = 00h
  10198.     CF set on error
  10199.         AH = error code
  10200.         00h successful
  10201.         01h invalid function request
  10202.         80h timeout
  10203.         DDh media change requested
  10204. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=59h"SyQuest"
  10205. --------d-1320-------------------------------
  10206. INT 13 - DISK - ??? (Western Digital "Super BIOS")
  10207.     AH = 20h
  10208.     ???
  10209. Return: ???
  10210. Notes:    returns some kind of status related to whether the drive contains its
  10211.       default media type
  10212.     QEMM v6.00 calls INT 13/AX=2000h/DL=81h in some cases
  10213. --------b-1320-------------------------------
  10214. INT 13 U - Compaq, ATAPI Removable Media Device - GET CURRENT MEDIA FORMAT
  10215.     AH = 20h
  10216.     DL = drive number (00h,01h)
  10217. Return: CF clear if successful
  10218.         AL = media type (see #0197)
  10219.         AH = 00h
  10220.     CF set on error
  10221.         AH = error code
  10222.         01h invalid request
  10223.         30h drive does not support media sense
  10224.         31h no such drive / media not present
  10225.         32h non-default media / drive does not supporte media type
  10226. Notes:    this function is supported by the 3/8/93 ROM BIOS, but only partially
  10227.       (AL is always 00h when successful) by the 8/3/93 version
  10228.     this function is also supported by some recent versions of the Phoenix
  10229.       486 BIOS
  10230.  
  10231. (Table 0197)
  10232. Values for Compaq/ATAPI diskette media type:
  10233.  03h    720K  (1M unformatted)
  10234.  04h    1.44M (2M unformatted)
  10235.  06h    2.88M (4M unformatted)
  10236.  0Ch    360K
  10237.  0Dh    1.2M
  10238.  0Eh    Toshiba 3mode
  10239.  0Fh    NEC 3mode (1024-byte sectors)
  10240.  10h    ATAPI Removable Media Device
  10241. --------c-1320-------------------------------
  10242. INT 13 u - QUICKCACHE II v4.20 - DISMOUNT
  10243.     AH = 20h
  10244.     AL = drive (00h = A:, etc. or 7Fh for all removable drives???
  10245.                    or FFh for all drives)
  10246. Return: AX = status (0000h successful)
  10247. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  10248.       Associates, Inc.
  10249. Desc:    flush any dirty buffers for the specified drive(s) and then discard
  10250.       those sector buffers
  10251. SeeAlso: AH=21h"QUICKCACHE",AH=22h"QUICKCACHE",AH=28h
  10252. --------d-1321-------------------------------
  10253. INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS
  10254.     AH = 21h
  10255.     AL = number of sectors to write
  10256.     CH = low byte of 12-bit cylinder number
  10257.     CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
  10258.     DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
  10259.     DL = drive number (80h,81h)
  10260.     ES:BX -> buffer for data to be read
  10261. Return: CF clear if successful
  10262.         ES:BX buffer filled
  10263.     CF set on error
  10264.     AH = status (see #0166 at AH=01h)
  10265. Desc:    read from the disk using the Multiple Block mode available on newer
  10266.       IDE drives and some hard disk controllers, which generates an
  10267.       interrupt only after the end of transferring a group of sectors
  10268.       rather than after each sector
  10269. Notes:    must call AH=24h"PS/1" before using this function
  10270.     input values in CL and DH are not range-checked
  10271.     the byte at address 0040h:0074h is set to the status of the operation
  10272. SeeAlso: AH=02h,AH=22h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  10273. --------c-1321-------------------------------
  10274. INT 13 u - QUICKCACHE II v4.20 - FLUSH CACHE
  10275.     AH = 21h
  10276. Return: AX = status (0000h successful)
  10277. Desc:    immediately write all dirty sectors back to disk
  10278. SeeAlso: AH=25h"QUICKCACHE",AH=2Eh,AH=2Fh
  10279. --------d-1322-------------------------------
  10280. INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS
  10281.     AH = 22h
  10282.     AL = number of sectors to write
  10283.     CH = low byte of 12-bit cylinder number
  10284.     CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
  10285.     DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
  10286.     DL = drive number (80h,81h)
  10287.     ES:BX -> buffer containing data to be written
  10288. Return: CF clear if successful
  10289.     CF set on error
  10290.     AH = status (see #0166 at AH=01h)
  10291. Desc:    write to the disk using the Multiple Block mode available on newer
  10292.       IDE drives and some hard disk controllers, which generates an
  10293.       interrupt only after the end of transferring a group of sectors
  10294.       rather than after each sector
  10295. Notes:    must call AH=24h"PS/1" before using this function
  10296.     input values in CL and DH are not range-checked
  10297.     the byte at address 0040h:0074h is set to the status of the operation
  10298. SeeAlso: AH=03h,AH=21h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  10299. --------c-1322-------------------------------
  10300. INT 13 u - QUICKCACHE II v4.20 - ENABLE/DISABLE CACHE
  10301.     AH = 22h
  10302.     AL = new state (00h disabled, 01h enabled)
  10303. Return: AX = status (0000h successful)
  10304. Note:    enables/disables caching of all drives
  10305. SeeAlso: AH=2Ch,AH=2Dh,AH=32h,AH=33h,AH=A3h,AH=A4h
  10306. --------d-1323-------------------------------
  10307. INT 13 U - HARD DISK - PS/1 and newer PS/2 - SET CONTROLLER FEATURES REGISTER
  10308.     AH = 23h
  10309.     AL = feature number (see #0198)
  10310.     DL = drive number (80h,81h)
  10311.     ???
  10312. Return: CF clear if successful
  10313.     CF set on error
  10314.     AH = status (see #0166 at AH=01h)
  10315. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=24h"PS/1",AH=25h"PS/1"
  10316.  
  10317. (Table 0198)
  10318. Values for PS/1 hard disk feature number:
  10319.  01h    select 8-bit data transfers instead of 16-bit
  10320.  02h    enable write cache
  10321.  22h    Write Same, user-specified area
  10322.  33h    disable retries
  10323.  44h    set number of ECC bytes for read long/write long (see AH=0Ah,AH=0Bh)
  10324.  54h    set cache segments
  10325.  55h    disable lookahead
  10326.  66h    disable reverting to power-on defaults
  10327.  77h    disable error correctioni
  10328.  81h    select 16-bit data transfers (default)
  10329.  82h    disable write cache
  10330.  88h    enable error correction (default)
  10331.  99h    enable retries (default)
  10332.  AAh    enable lookahead
  10333.  BBh    set ECC length for read long/write long to four bytes
  10334.  CCh    enable reverting to power-on defaults
  10335.  DDh    Write Same, entire disk
  10336. SeeAlso: #P175
  10337. --------c-1323-------------------------------
  10338. INT 13 U - QUICKCACHE II v4.20 - GET ??? ADDRESS
  10339.     AH = 23h
  10340. Return: AX = status (0000h successful)
  10341.     ES = segment of ??? data
  10342. --------d-1324-------------------------------
  10343. INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE
  10344.     AH = 24h
  10345.     AL = number of sectors per block (2,4,8,16)
  10346.     DL = drive number (80h,81h)
  10347. Return: CF clear if successful
  10348.     CF set onerror
  10349.     AH = status (see #0166 at AH=01h)
  10350. Desc:    specify how many sectors the controller should transfer as a group
  10351.       between operation-complete interrupts when using the Read Multiple
  10352.       and Write Multiple functions (AH=21h,AH=22h)
  10353. Notes:    set the number of sectors to 0 to disable multiple-transfer mode
  10354.     the maximum value for the block size depends on the fixed disk
  10355.       drive type.  The value is stored in byte 15h of the fixed disk
  10356.       drive parameter table that is created by POST.
  10357.     the byte at address 0040h:0074h is set to status of operation.
  10358. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=23h"PS/1",AH=25h"PS/1"
  10359. --------c-1324-------------------------------
  10360. INT 13 u - QUICKCACHE II v4.20 - SET SECTORS
  10361.     AH = 24h
  10362.     BX = new number of sector buffers in cache
  10363. Return: AX = status
  10364.         0000h successful
  10365.         0001h failed--size adjusted
  10366.         8000h cache cannot be resized while enabled
  10367. SeeAlso: AH=36h
  10368. --------d-1325-------------------------------
  10369. INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE
  10370.     AH = 25h
  10371.     DL = drive number (80h,81h)
  10372.     ES:BX-> 512 byte buffer for reply packet
  10373. Return: CF clear if successful
  10374.     CF set on error
  10375.     AH = status (see #0166 at AH=01h)
  10376.     buffer filled with ATA/IDE-style drive information block (see #0199)
  10377. Desc:    retrieves the 256 words of drive data stored on an IDE hard disk
  10378. Notes:    the byte at address 0040h:0074h is set to the status of the operation
  10379.     IBM officially classifies this function as optional
  10380. SeeAlso: AH=23h"PS/1"
  10381.  
  10382. Format of drive information block:
  10383. Offset    Size    Description    (Table 0199)
  10384.  00h    WORD    general drive configuration (see #0200)
  10385.  02h    WORD    number of cylinders
  10386.  04h    WORD    reserved
  10387.  06h    WORD    number of heads
  10388.  08h    WORD    number of unformatted bytes per track
  10389.  0Ah    WORD    number of unformatted bytes per sector
  10390.  0Ch    WORD    number of sectors per track
  10391.  0Eh  6 BYTEs    vendor unique
  10392.  14h 20 BYTEs    serial number in ASCII, 0000h=not specified)
  10393.  28h    WORD    buffer type
  10394.  2Ah    WORD    buffer size in 512 byte increments (0000h=not specified)
  10395.  2Ch    WORD    number of ECC bytes passed on Read/Write Long cmds
  10396.         0000h = not specified
  10397.  2Eh  8 BYTEs    firmware revision in ASCII, 0000h=not specified
  10398.  36h 40 BYTEs    model number in ASCII, 0000h=not specified
  10399.  5Eh    WORD    bits 15-8  Vendor Unique
  10400.         bits 7-0  00h = Read/Write Multiple commands not implemented
  10401.               xxh = Maximum number of sectors that can be
  10402.               transferred per interrupt on Read and Write
  10403.               Multiple commands
  10404.  60h    WORD    0000h = cannot perform doubleword I/O
  10405.         0001h = can perform doubleword I/O
  10406.  62h    WORD    capabilities
  10407.         bit 15-9  0=reserved
  10408.         bit 8  1=DMA Supported
  10409.         bit 7-0     Vendor Unique
  10410.  64h    WORD    reserved
  10411.  66h    WORD    bits 15-8 PIO data transfer cycle timing mode
  10412.         bits 7-0  Vendor Unique
  10413.  68h    WORD    bits 15-8 DMA data transfer cycle timing mode
  10414.         bits 7-0  Vendor Unique
  10415.  6Ah    WORD    bits 15-1 reserved
  10416.         bit 0    1=the fields reported in tranlation mode are valid
  10417.             0=the fields reported in translation mode may be valid
  10418.  6Ch    WORD    number of current cylinders
  10419.  6Eh    WORD    number of current heads
  10420.  70h    WORD    number of current sectors per track
  10421.  72h    DWORD    current capacity in sectors
  10422.  76h    WORD    reserved
  10423.  78h 136 BYTEs    not defined by ATA spec 2.6
  10424. 100h 64 BYTEs    vendor unique
  10425. 140h 96 BYTEs    reserved
  10426. Note:    the above description is as in the ATA (AT Attachment) Specification.
  10427. SeeAlso: #P157
  10428.  
  10429. Bitfields for general drive configuration:
  10430. Bit(s)    Description    (Table 0200)
  10431.  15    0   reserved for non-magnetic drives
  10432.  14    format speed tolerance gap required
  10433.  13    track offset option available
  10434.  12    data strobe offset option available
  10435.  11    rotational speed tolerance is > 0.5%
  10436.  10    disk transfer rate > 10 Mbs
  10437.  9    disk transfer rate > 5Mbs but <= 10Mbs
  10438.  8    disk transfer rate <= 5Mbs
  10439.  7    removable cartridge drive
  10440.  6    fixed drive
  10441.  5    spindle motor control option implemented
  10442.  4    head switch time > 15 usec
  10443.  3    not MFM encoded
  10444.  2    soft sectored
  10445.  1    hard sectored
  10446.  0    reserved (0)
  10447. --------c-1325-------------------------------
  10448. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH INTERVAL
  10449.     AH = 25h
  10450.     BX = interval
  10451. Return: AX = status (0000h successful)
  10452. Desc:    specify how often the cache should write dirty buffers to disk when
  10453.       buffered writes are enabled
  10454. SeeAlso: AH=21h"QUICKCACHE",AH=2Ch,AH=2Eh
  10455. --------c-1326-------------------------------
  10456. INT 13 U - QUICKCACHE II v4.20 - UNINSTALL
  10457.     AH = 26h
  10458. Return: AX = status
  10459.         0000h successful
  10460.         0001h-00FFh interrupt vector which was hooked by another TSR
  10461. SeeAlso: AH=27h
  10462. --------c-1327--BX0000-----------------------
  10463. INT 13 u - QUICKCACHE II v4.20 - INSTALLATION CHECK
  10464.     AH = 27h
  10465.     BX = 0000h
  10466. Return: AX = 0000h if installed
  10467.     BX nonzero if installed
  10468.         BH = major version
  10469.         BL = binary minor version
  10470. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  10471.       Associates, Inc.
  10472. SeeAlso: AH=26h,AH=A0h,INT 16/AX=FFA5h/CX=1111h
  10473. --------c-1328-------------------------------
  10474. INT 13 U - QUICKCACHE II v4.20 - SET AUTOMATIC DISMOUNT
  10475.     AH = 28h
  10476.     AL = new state (00h disabled, 01h enabled)
  10477. Return: AX = status (0000h successful)
  10478. SeeAlso: AH=20h"QUICKCACHE"
  10479. --------c-1329-------------------------------
  10480. INT 13 U - QUICKCACHE II v4.20 - NOP
  10481.     AH = 29h
  10482. Return: AX = 0000h
  10483. --------c-132A-------------------------------
  10484. INT 13 u - QUICKCACHE II v4.20 - SET BUFFER SIZE
  10485.     AH = 2Ah
  10486.     AL = buffer size (1-30)
  10487. Return: AX = status (0000h successful)
  10488. Desc:    specify the number of cache sector buffers to dedicate to buffered read
  10489.       and write operations
  10490. SeeAlso: AH=2Ch,AH=2Dh,AH=39h,AH=3Ah
  10491. --------c-132B-------------------------------
  10492. INT 13 U - QUICKCACHE II v4.20 - DRIVE ACCESS SOUNDS
  10493.     AH = 2Bh
  10494.     AL = new state (00h disabled, 01h enabled)
  10495. Return: AX = status (0000h successful)
  10496. --------c-132C-------------------------------
  10497. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED WRITES
  10498.     AH = 2Ch
  10499.     AL = new state (00h disabled, 01h enabled)
  10500. Return: AX = status (0000h successful)
  10501. Desc:    specify whether the cache should delay disk writes
  10502. Note:    this function enables or disables delayed writes for all drives; use
  10503.       AH=38h to change a single drive
  10504. SeeAlso: AH=25h"QUICKCACHE",AH=2Dh,AH=2Eh,AH=38h
  10505. --------c-132D-------------------------------
  10506. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED READ
  10507.     AH = 2Dh
  10508.     AL = new state (00h disabled, 01h enabled)
  10509. Return: AX = status (0000h successful)
  10510. Desc:    specify whether the cache should attempt to read ahead of actual
  10511.       requests
  10512. Note:    this function enables or disables read-ahead for all drives; use AH=37h
  10513.       to change a single drive
  10514. SeeAlso: AH=2Ch,AH=37h
  10515. --------c-132E-------------------------------
  10516. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH COUNT
  10517.     AH = 2Eh
  10518.     BX = flush count
  10519. Return: AX = status (0000h successful)
  10520. Desc:    specify how many dirty sectors the cache should write after each flush
  10521.       interval (see AH=25h"QUICKCACHE") when buffered writes are enabled
  10522. SeeAlso: AH=21h"QUICKCACHE",AH=25h"QUICKCACHE",AH=2Ch
  10523. --------c-132F-------------------------------
  10524. INT 13 - QUICKCACHE II v4.20 - FORCE IMMEDIATE INCREMENTAL FLUSH
  10525.     AH = 2Fh
  10526. Return: AX = status (0000h successful)
  10527. Desc:    immediately flush up to "flushcount" dirty sectors to disk as if the
  10528.       flush interval had expired
  10529. SeeAlso: AH=21h"QUICKCACHE"
  10530. --------c-1330-------------------------------
  10531. INT 13 u - QUICKCACHE II v4.20 - GET INFO
  10532.     AH = 30h
  10533.     AL = what to get
  10534.         00h system info (see #0201)
  10535.         01h drive info (see #0202)
  10536.         02h access frequency (array of 30 words)
  10537.         03h drive index
  10538.         (array of 32 bytes indicating BIOS drive for DOS drive)
  10539.     DS:DX -> buffer for info
  10540. Return: AX = status (0000h successful, 8000h invalid info specifier)
  10541. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  10542.       Associates, Inc.
  10543.  
  10544. Format of QUICKCACHE II system info:
  10545. Offset    Size    Description    (Table 0201)
  10546.  00h    BYTE    flag: cache enabled
  10547.  01h    BYTE    flag: buffered writes enabled
  10548.  02h    BYTE    flag: buffered reads enabled
  10549.  03h    BYTE    flag: sounds enabled
  10550.  04h    BYTE    flag: autodismount enabled
  10551.  05h    BYTE    ???
  10552.  06h    BYTE    flag: ???
  10553.  07h    BYTE    flag: ???
  10554.  08h    BYTE    flag: "em_assigned"
  10555.  09h    BYTE    flag: emulated EMS
  10556.  0Ah    BYTE    single sector bonus
  10557.  0Bh    BYTE    "sticky_max"
  10558.  0Ch    BYTE    write sector bonus
  10559.  0Dh    BYTE    bonus threshold
  10560.  0Eh    WORD    flush interval
  10561.  10h    WORD    flush count
  10562.  12h    WORD    reserve pool size
  10563.  14h    WORD    remaining space in reserve pool
  10564.  16h    WORD    required free memory
  10565.  18h    WORD    total cache sectors
  10566.  1Ah    WORD    dirty cache sectors
  10567.  1Ch    BYTE    trace buffer size
  10568.  1Dh    BYTE    reserved (padding)
  10569. SeeAlso: #0202
  10570.  
  10571. Format of QUICKCACHE II drive info [16-element array, one element]:
  10572. Offset    Size    Description    (Table 0202)
  10573.  00h    BYTE    DOS drive number
  10574.  01h    BYTE    BIOS drive number
  10575.  02h    BYTE    maximum sector number
  10576.  03h    BYTE    maximum head number
  10577.  04h    BYTE    read buffer size
  10578.  05h    BYTE    write buffer size
  10579.  06h    BYTE    last status
  10580.  07h    BYTE    flag: enabled
  10581.  08h    BYTE    flag: buffered write enabled
  10582.  09h    BYTE    flag: buffered read enabled
  10583.  0Ah    BYTE    flag: in use (drive info is valid)
  10584.  0Bh    BYTE    flag: cylinder flush
  10585.  0Ch    BYTE    reserved (padding)
  10586.  0Dh    BYTE    sectors per track
  10587.  0Eh    WORD    sector size
  10588.  10h    WORD    sectors assigned
  10589.  12h    WORD    dirty sectors
  10590.  14h    WORD    reserved sectors
  10591.  16h    WORD    number of read errors
  10592.  18h    WORD    number of write errors
  10593.  1Ah    DWORD    "rio_count"
  10594.  1Eh    DWORD    number of cache misses
  10595.  22h    DWORD    "wio_count"
  10596.  26h    DWORD    "dio_count"
  10597. SeeAlso: #0201
  10598. --------c-1331-------------------------------
  10599. INT 13 U - QUICKCACHE II v4.20 - RESERVE MEMORY
  10600.     AH = 31h
  10601.     BX = number of paragraphs of conventional memory to reserve for apps
  10602. Return: AX = status (0000h successful)
  10603. --------c-1332-------------------------------
  10604. INT 13 U - QUICKCACHE II v4.20 - ENABLE CACHING FOR SPECIFIC DRIVE
  10605.     AH = 32h
  10606.     AL = drive number (00h=A:)
  10607. Return: AX = status (0000h successful)
  10608. SeeAlso: AH=22h"QUICKCACHE",AH=33h
  10609. --------c-1333-------------------------------
  10610. INT 13 U - QUICKCACHE II v4.20 - DISABLE CACHING FOR SPECIFIC DRIVE
  10611.     AH = 33h
  10612.     AL = drive number (00h=A:)
  10613. Return: AX = status (0000h successful)
  10614. SeeAlso: AH=22h"QUICKCACHE",AH=32h
  10615. --------c-1334-------------------------------
  10616. INT 13 U - QUICKCACHE II v4.20 - SECTOR LOCKING
  10617.     AH = 34h
  10618.     AL = function
  10619.         00h end sector locking/unlocking
  10620.         01h lock all accessed sectors into cache
  10621.         02h unlock all accessed sectors and discard from cache
  10622. Return: AX = status (0000h successful)
  10623. SeeAlso: AH=20h"QUICKCACHE",AH=35h
  10624. --------c-1335-------------------------------
  10625. INT 13 U - QUICKCACHE II v4.20 - SET LOCK POOL SIZE
  10626.     AH = 35h
  10627.     BX = number of sectors in lock pool
  10628. Return: AX = status (0000h successful)
  10629. Desc:    specify the number of cache sector buffers which may be dedicated to
  10630.       data locked into the cache
  10631. SeeAlso: AH=34h
  10632. --------c-1336-------------------------------
  10633. INT 13 U - QUICKCACHE II v4.20 - SET TRACE BUFFER SIZE
  10634.     AH = 36h
  10635.     AL = new size of trace buffer
  10636. Return: AX = status (0000h successful)
  10637. Note:    called with AL=05h during an INT 13/AH=24h"QUICKCACHE" call
  10638. SeeAlso: AH=24h"QUICKCACHE"
  10639. --------c-1337-------------------------------
  10640. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED READS FOR SPECIFIC DRIVE
  10641.     AH = 37h
  10642.     AL = new state (00h disabled, else enabled)
  10643.     DL = drive number (00h = A:)
  10644. Return: AX = status (0000h successful)
  10645. SeeAlso: AH=2Dh,AH=38h
  10646. --------c-1338-------------------------------
  10647. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED WRITES FOR SPECIFIC DRIVE
  10648.     AH = 38h
  10649.     AL = new state (00h disabled, else enabled)
  10650.     DL = drive number (00h = A:)
  10651. Return: AX = status (0000h successful)
  10652. SeeAlso: AH=2Ch,AH=37h
  10653. --------c-1339-------------------------------
  10654. INT 13 U - QUICKCACHE II v4.20 - SET READ BUFFER SIZE FOR SPECIFIC DRIVE
  10655.     AH = 39h
  10656.     AL = new size of read buffer
  10657.     DL = drive number (00h = A:)
  10658. Return: AX = status (0000h successful)
  10659. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  10660.       Associates, Inc.
  10661. SeeAlso: AH=2Ah,AH=3Ah
  10662. --------c-133A-------------------------------
  10663. INT 13 U - QUICKCACHE II v4.20 - SET WRITE BUFFER SIZE FOR SPECIFIC DRIVE
  10664.     AH = 3Ah
  10665.     AL = new size of write buffer
  10666.     DL = drive number (00h = A:)
  10667. Return: AX = status (0000h successful)
  10668. SeeAlso: AH=2Ah,AH=39h
  10669. --------c-133B-------------------------------
  10670. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  10671.     AH = 3Bh
  10672.     AL = new state of ??? (01h enabled, else disabled)
  10673. Return: AX = status (0000h successful)
  10674. Note:    is affected by the flag reported at offset 05h of the system info
  10675.       returned by AH=30h, and sets the flag at offset 06h
  10676. SeeAlso: AH=3Ch
  10677. --------c-133C-------------------------------
  10678. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  10679.     AH = 3Ch
  10680.     AL = new state of ??? (01h enabled, else disabled)
  10681. Return: AX = status (0000h successful)
  10682. Note:    is affected by the flag reported at offset 05h of the system info
  10683.       returned by AH=30h, and sets the flag at offset 07h
  10684. SeeAlso: AH=3Bh
  10685. --------c-133D-------------------------------
  10686. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE CYLINDER FLUSH FOR DRIVE
  10687.     AH = 3Dh
  10688.     AL = new state (01h enabled, else disabled)
  10689.     DL = drive number (00h = A:)
  10690. Return: AX = status (0000h successful)
  10691. --------c-133E-------------------------------
  10692. INT 13 U - QUICKCACHE II v4.20 - SET SINGLE-SECTOR BONUS
  10693.     AH = 3Eh
  10694.     AL = new value for bonus
  10695. Return: AX = status (0000h successful)
  10696. Desc:    specify the bonus score to give to single-sector transfers in order to
  10697.       keep those sectors in the cache longer
  10698. --------c-133F-------------------------------
  10699. INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD
  10700.     AH = 3Fh
  10701.     AL = new value for bonus threshold
  10702. Return: AX = status (0000h successful)
  10703. --------c-1340-------------------------------
  10704. INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max"
  10705.     AH = 40h
  10706.     AL = new value for "sticky_max"
  10707. Return: AX = status (0000h successful)
  10708. SeeAlso: AH=41h"QUICKCACHE"
  10709. --------d-1341--BX55AA-----------------------
  10710. INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK
  10711.     AH = 41h
  10712.     BX = 55AAh
  10713.     DL = drive (80h-FFh)
  10714. Return: CF set on error (not supported)
  10715.         AH = 01h (invalid function)
  10716.     CF clear if successful
  10717.         BX = AA55h if installed
  10718.         AH = major version of extensions
  10719.         (01h = 1.x, 20h = 2.0/EDD-1.0, 21h = 2.1/EDD-1.1)
  10720.         AL = internal use
  10721.         CX = API subset support bitmap (see #0203)
  10722.         DH = extension version (v2.0+ ??? -- not present in 1.x)
  10723. Note:    the Phoenix Enhanced Disk Drive Specification v1.0 uses version 2.0 of
  10724.       the INT 13 Extensions API
  10725. SeeAlso: AH=42h"INT 13 Ext",AH=48h"INT 13 Ext"
  10726.  
  10727. Bitfields for IBM/MS INT 13 Extensions API support bitmap:
  10728. Bit(s)    Description    (Table 0203)
  10729.  0    extended disk access functions (AH=42h-44h,47h,48h) supported
  10730.  1    removable drive controller functions (AH=45h,46h,48h,49h,INT 15/AH=52h)
  10731.       supported
  10732.  2    enhanced disk drive (EDD) functions (AH=48h,AH=4Eh) supported
  10733.     extended drive parameter table is valid (see #0205,#0208)
  10734.  3-15    reserved (0)
  10735. --------c-1341-------------------------------
  10736. INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ???
  10737.     AH = 41h
  10738.     AL = direction
  10739.         01h save to file
  10740.         else restore from file
  10741.     ES:DI -> 1024-byte buffer for ???
  10742. Return: AX = status (0000h successful, 8000h failed)
  10743. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  10744.       Associates, Inc.
  10745. SeeAlso: AH=40h"QUICKCACHE"
  10746. --------d-1342-------------------------------
  10747. INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ
  10748.     AH = 42h
  10749.     DL = drive number
  10750.     DS:SI -> disk address packet (see #0204)
  10751. Return: CF clear if successful
  10752.         AH = 00h
  10753.     CF set on error
  10754.         AH = error code (see #0166)
  10755.         disk address packet's block count field set to number of blocks
  10756.           successfully transferred
  10757. SeeAlso: AH=02h,AH=41h"INT 13 Ext",AH=43h"INT 13 Ext"
  10758.  
  10759. Format of disk address packet:
  10760. Offset    Size    Description    (Table 0204)
  10761.  00h    BYTE    10h (size of packet)
  10762.  01h    BYTE    reserved (0)
  10763.  02h    WORD    number of blocks to transfer (max 007Fh for Phoenix EDD)
  10764.  04h    DWORD    -> transfer buffer
  10765.  08h    QWORD    starting absolute block number
  10766.         (for non-LBA devices, compute as
  10767.           (Cylinder*NumHeads + SelectedHead) * SectorPerTrack +
  10768.           SelectedSector - 1
  10769. --------N-134257DX1234-----------------------
  10770. INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK
  10771.     AX = 4257h ("BW")
  10772.     DX = 1234h
  10773. Return: BX = 414Ch if installed
  10774. Program: BWLPD is the printer daemon from the BW-NFS package
  10775. SeeAlso: INT 62/AH=00h"ETHDEV"
  10776. --------d-1343-------------------------------
  10777. INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE
  10778.     AH = 43h
  10779.     AL = write flags
  10780.        ---v1.0,2.0---
  10781.        bit 0: verify write
  10782.        bits 7-1 reserved (0)
  10783.        ---v2.1---
  10784.        00h,01h write without verify
  10785.        02h write with verify
  10786.     DL = drive number
  10787.     DS:SI -> disk address packet (see #0204)
  10788. Return: CF clear if successful
  10789.         AH = 00h
  10790.     CF set on error
  10791.         AH = error code (see #0166)
  10792.         disk address packet's block count field set to number of blocks
  10793.           successfully transferred
  10794. Note:    the BIOS returns CF set/AH=01h (invalid function) if verify is
  10795.       requested but not supported
  10796. SeeAlso: AH=03h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=44h
  10797. --------d-1344-------------------------------
  10798. INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS
  10799.     AH = 44h
  10800.     DL = drive number
  10801.     DS:SI -> disk address packet (see #0204)
  10802. Return: CF clear if successful
  10803.         AH = 00h
  10804.     CF set on error
  10805.         AH = error code (see #0166)
  10806.         disk address packet's block count field set to number of blocks
  10807.           successfully verified
  10808. SeeAlso: AH=04h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=47h
  10809. --------d-1345-------------------------------
  10810. INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE
  10811.     AH = 45h
  10812.     AL = operation
  10813.         00h lock media in drive
  10814.         01h unlock media
  10815.         02h check lock status
  10816.     DL = drive number
  10817. Return: CF clear if successful
  10818.         AH = 00h
  10819.         AL = lock state (00h = unlocked)
  10820.     CF set on error
  10821.         AH = error code (see #0166)
  10822. Notes:    this function is required to be supported for any removable drives
  10823.       numbered 80h or higher
  10824.     up to 255 locks may be placed on a drive, and the media will not
  10825.       be physically unlocked until all locks have been removed
  10826. SeeAlso: AH=41h"INT 13 Ext",AH=46h,AH=49h,INT 15/AH=52h"INT 13 Extensions"
  10827. --------d-1346-------------------------------
  10828. INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA
  10829.     AH = 46h
  10830.     AL = 00h (reserved)
  10831.     DL = drive number
  10832. Return: CF clear if successful
  10833.         AH = 00h
  10834.     CF set on error
  10835.         AH = error code (see #0166)
  10836. SeeAlso: AH=49h,INT 15/AH=52h"INT 13 Extensions"
  10837. --------d-1347-------------------------------
  10838. INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK
  10839.     AH = 47h
  10840.     DL = drive number
  10841.     DS:SI -> disk address packet (see #0204)
  10842. Return: CF clear if successful
  10843.         AH = 00h
  10844.     CF set on error
  10845.         AH = error code (see #0166)
  10846. SeeAlso: AH=0Ch,AH=42h"INT 13 Ext"
  10847. --------d-1348-------------------------------
  10848. INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS
  10849.     AH = 48h
  10850.     DL = drive (80h-FFh)
  10851.     DS:SI -> buffer for drive parameters (see #0205)
  10852. Return: CF clear if successful
  10853.         AH = 00h
  10854.         DS:SI buffer filled
  10855.     CF set on error
  10856.         AH = error code (see #0166)
  10857. SeeAlso: AH=08h,AH=41h,AH=49h
  10858.  
  10859. Format of IBM/MS INT 13 Extensions drive parameters:
  10860. Offset    Size    Description    (Table 0205)
  10861.  00h    WORD    (call) size of buffer (001Ah for v1.x, 001Eh for v2.x)
  10862.         (ret) size of returned data
  10863.  02h    WORD    information flags (see #0206)
  10864.  04h    DWORD    number of physical cylinders on drive
  10865.  08h    DWORD    number of physical heads on drive
  10866.  0Ch    DWORD    number of physical sectors per track
  10867.  10h    QWORD    total number of sectors on drive
  10868.  18h    WORD    bytes per sector
  10869. ---v2.0+ ---
  10870.  1Ah    DWORD    -> EDD configuration parameters (see #0208)
  10871.         FFFFh:FFFFh if not available
  10872. Note:    if the size is less than 30 on call, the final DWORD will not be
  10873.       returned by a v2.x implementation
  10874. SeeAlso: #0207,#2867
  10875.  
  10876. Bitfields for IBM/MS INT 13 Extensions information flags:
  10877. Bit(s)    Description    (Table 0206)
  10878.  0    DMA boundary errors handled transparently
  10879.  1    cylinder/head/sectors-per-track information is valid
  10880.  2    removable drive
  10881.  3    write with verify supported
  10882.  4    drive has change-line support (required if drive >= 80h is removable)
  10883.  5    drive can be locked (required if drive >= 80h is removable)
  10884.  6    CHS information set to maximum supported values, not current media
  10885.  15-7    reserved (0)
  10886. SeeAlso: #0205
  10887.  
  10888. Format of Phoenix Enhanced Disk Drive Spec translated drive parameter table:
  10889. Offset    Size    Description    (Table 0207)
  10890.  00h    WORD    number of cylinders
  10891.  02h    BYTE    number of heads
  10892.  03h    BYTE    A0h (signature indicating translated table)
  10893.  04h    BYTE    number of physical sectors per track
  10894.  05h    WORD    starting write precompensation cylinder number
  10895.  07h    BYTE    reserved
  10896.  08h    BYTE    control byte (see #2869 at INT 41"DISK 0")
  10897.  09h    WORD    number of physical cylinders
  10898.  0Bh    BYTE    number of physical heads
  10899.  0Ch    WORD    cylinder number of landing zone
  10900.  0Eh    BYTE    number of logical sectors per track
  10901.  0Fh    BYTE    checksum
  10902. Program: the Phoenix Enhanced Disk Drive Specification is an addition to the
  10903.       IBM/MS INT 13 extensions
  10904. SeeAlso: #0208,#2867
  10905.  
  10906. Format of Phoenix Enhanced Disk Drive Spec Fixed Disk Parameter Table:
  10907. Offset    Size    Description    (Table 0208)
  10908.  00h    WORD    physical I/O port base address
  10909.  02h    WORD    disk-drive control port address
  10910.  04h    BYTE    drive flags (see #0209)
  10911.  05h    BYTE    proprietary information
  10912.         bits 7-4 reserved (0)
  10913.         bits 3-0: Phoenix proprietary (used by BIOS)
  10914.  06h    BYTE    IRQ (bits 3-0; bits 7-4 reserved and must be 0)
  10915.  07h    BYTE    sector count for multi-sector transfers
  10916.  08h    BYTE    DMA control
  10917.         bits 7-4: DMA type (0-2) as per ATA-2 specification
  10918.         bits 3-0: DMA channel
  10919.  09h    BYTE    programmed I/O control
  10920.         bits 7-4: reserved (0)
  10921.         bits 3-0: PIO type (1-4) as per ATA-2 specification
  10922.  0Ah    WORD    drive options (see #0210)
  10923.  0Ch  2 BYTEs    reserved (0)
  10924.  0Eh    BYTE    extension revision level (high nybble=major, low nybble=minor)
  10925.         (currently 10h for v1.0 and 11h for v1.1)
  10926.  0Fh    BYTE    2's complement checksum of bytes 00h-0Eh
  10927.         8-bit sum of all bytes 00h-0Fh should equal 00h
  10928. SeeAlso: #0207
  10929.  
  10930. Bitfields for Phoenix Enhanced Disk Drive Spec drive flags:
  10931. Bit(s)    Description    (Table 0209)
  10932.  7    reserved (1)
  10933.  6    LBA enabled
  10934.  5    reserved (1)
  10935.  4    drive is slave
  10936.  3-0    reserved (0)
  10937. SeeAlso: #0208,#0210
  10938.  
  10939. Bitfields for Phoenix Enhanced Disk Drive Spec drive options:
  10940. Bit(s)    Description    (Table 0210)
  10941.  0    fast PIO enabled
  10942.  1    fast DMA access enabled
  10943.  2    block PIO (multi-sector transfers) enabled
  10944.  3    CHS translation enabled
  10945.  4    LBA translation enabled
  10946.  5    removable media
  10947.  6    ATAPI device (CD-ROM)
  10948.  7    32-bit transfer mode
  10949. ---v1.1---
  10950.  8    ATAPI device uses DRQ to signal readiness for packet command
  10951.     (must be 0 if bit 6 is 0)
  10952.  10-9    translation type (must be 00 if bit 3 is 0)
  10953.     00 Phoenix bit-shifting translation
  10954.     01 LBA-assisted translation
  10955.     10 reserved
  10956.     11 proprietary translation
  10957.  15-8    reserved
  10958. SeeAlso: #0208,#0209
  10959. --------d-1349-------------------------------
  10960. INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE
  10961.     AH = 49h
  10962.     DL = drive number
  10963. Return: CF clear if media has not changed
  10964.         AH = 00h
  10965.     CF set if media may have changed
  10966.         AH = 06h (see #0166)
  10967. Note:    unlike AH=16h, any drive number may be specified
  10968. SeeAlso: AH=16h,AH=41h"INT 13 Ext",AH=46h
  10969. --------d-134A-------------------------------
  10970. INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION
  10971.     AH = 4Ah
  10972.     AL = 00h
  10973.     DS:SI -> specification packet (see #0211)
  10974. Return: CF clear if successful
  10975.     CF set on error (drive will not be in emulation mode)
  10976.     AX = return codes
  10977. SeeAlso: AH=48h,AX=4B00h,AH=4Ch,AH=4Dh
  10978.  
  10979. Format of Bootable CD-ROM Specification Packet:
  10980. Offset    Size    Description    (Table 0211)
  10981.  00h    BYTE    size of packet in bytes (13h)
  10982.  01h    BYTE    boot media type (see #0212)
  10983.  02h    BYTE    drive number
  10984.         00h floppy image
  10985.         80h bootable hard disk
  10986.         81h-FFh nonbootable or no emulation
  10987.  03h    BYTE    CD-ROM controller number
  10988.  04h    DWORD    Logical Block Address of disk image to emulate
  10989.  08h    WORD    device specification (see also #0212)
  10990.         (IDE) bit 0: drive is slave instead of master
  10991.         (SCSI)    bits 7-0: LUN and PUN
  10992.             bits 15-8: bus number
  10993.  0Ah    WORD    segment of 3K buffer for caching CD-ROM reads
  10994.  0Ch    WORD    load segment for initial boot image
  10995.         if 0000h, load at segment 07C0h
  10996.  0Eh    WORD    number of 512-byte virtual sectors to load
  10997.         (only valid for AH=4Ch)
  10998.  10h    BYTE    low byte of cylinder count (for INT 13/AH=08h)
  10999.  11h    BYTE    sector count, high bits of cylinder count (for INT 13/AH=08h)
  11000.  12h    BYTE    head count (for INT 13/AH=08h)
  11001. SeeAlso: #0213,AH=08h
  11002.  
  11003. Bitfields for Bootable CD-ROM boot media type:
  11004. Bit(s)    Description    (Table 0212)
  11005.  3-0    media type
  11006.     0000 no emulation
  11007.     0001 1.2M diskette
  11008.     0010 1.44M diskette
  11009.     0011 2.88M diskette
  11010.     0100 hard disk (drive C:)
  11011.     other reserved
  11012.  5-4    reserved (0)
  11013.  6    image contains ATAPI driver
  11014.  7    image contains SCSI driver(s)
  11015. SeeAlso: #0211
  11016. --------d-134B00-----------------------------
  11017. INT 13 - Bootable CD-ROM - TERMINATE DISK EMULATION
  11018.     AX = 4B00h
  11019.     DL = drive number or 7Fh to terminate all emulations
  11020.     DS:SI -> empty specification packet (see #0211)
  11021. Return: CF clear if successful
  11022.     CF set on error (drive will still be in emulation mode)
  11023.     AX = return codes
  11024.     DS:SI specification packet filled
  11025. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
  11026. --------d-134B01-----------------------------
  11027. INT 13 - Bootable CD-ROM - GET STATUS
  11028.     AX = 4B01h
  11029.     DL = drive number
  11030.     DS:SI -> empty specification packet (see #0211)
  11031. Return: CF clear if successful
  11032.     CF set on error
  11033.     AX = return codes
  11034.     DS:SI specification packet filled
  11035. Note:    same as AX=4B00h, but does not terminate emulation
  11036. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
  11037. --------d-134C-------------------------------
  11038. INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AND BOOT
  11039.     AH = 4Ch
  11040.     AL = 00h
  11041.     DS:SI -> specification packet (see #0211)
  11042. Return: never, if successful
  11043.     CF set (error while attempting to boot)
  11044.     AX = error codes
  11045. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Dh
  11046. --------d-134D00-----------------------------
  11047. INT 13 - Bootable CD-ROM - RETURN BOOT CATALOG
  11048.     AX = 4D00h
  11049.     DS:SI -> command packet (see #0213)
  11050. Return: CF clear if successful
  11051.     CF set on error
  11052.     AX = return codes
  11053. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch
  11054.  
  11055. Format of Bootable CD-ROM "get boot catalog" command packet:
  11056. Offset    Size    Description    (Table 0213)
  11057.  00h    BYTE    size of packet in bytes (08h)
  11058.  01h    BYTE    number of sectors of boot catalog to read
  11059.  02h    DWORD    -> buffer for boot catalog
  11060.  06h    WORD    first sector in boot catalog to transfer
  11061. SeeAlso: #0211
  11062. --------d-134E-------------------------------
  11063. INT 13 - IBM/MS INT 13 Extensions v2.1 - SET HARDWARE CONFIGURATION
  11064.     AH = 4Eh
  11065.     AL = function
  11066.         00h enable prefetch
  11067.         01h disable prefetch
  11068.         02h set maximum PIO transfer mode
  11069.         03h set PIO mode 0
  11070.         04h set default PIO transfer mode
  11071.         05h enable INT 13 DMA maximum mode
  11072.         06h disable INT 13 DMA
  11073.     DL = drive number
  11074. Return: CF clear if successful
  11075.         AH = 00h
  11076.         AL = status
  11077.         00h command was safe (only affected specified drive)
  11078.         01h other devices are affected
  11079.     CF set on error
  11080.         AH = error code (see #0166)
  11081. Note:    DMA and PIO modes are mutually exclusive, so selecting DMA disables
  11082.       PIO (for either the specified device or all devices on that
  11083.       controller), and selecting PIO disables DMA
  11084. SeeAlso: AH=41h"INT 13 Extensions"
  11085. --------v-135001------------------------
  11086. INT 13 - VIRUS - "Andropinis" - INSTALLATION CHECK
  11087.     AX = 5001h
  11088. Return: AX = 0150h if resident
  11089. SeeAlso: AX=FD50h"VIRUS",INT 21/AX=0B56h
  11090. --------v-135342CX0001-----------------------
  11091. INT 13 - ScanBoot - INSTALLATION CHECK
  11092.     AX = 5342h ("SB")
  11093.     CX = 0001h
  11094.     DX = 0000h
  11095. Return: CF clear if ScanBoot installed
  11096.        AX = 0000h
  11097.        CX = serial number ("SW" if shareware release)
  11098.        DX = version
  11099.        BX,SI,ES destroyed
  11100. Program: ScanBoot is a virus-detection TSR by PanSoft
  11101. --------d-135501-----------------------------
  11102. INT 13 - Seagate ST01/ST02 - Inquiry
  11103.     AX = 5501h
  11104.     DH = number of bytes to transfer
  11105.     DL = drive ID (80h, 81h, ...)
  11106.     ES:BX -> buffer for results
  11107. Return: ES:BX buffer filled with the Inquiry results
  11108. Notes:    the ST01/ST02 BIOS does not return any success/failure indication,
  11109.       so all commands must be assumed to have been successful
  11110.     the ST01/ST02 BIOS always maps its drives after the previous BIOS
  11111.       drives without changing the BIOS drive count at 0040h:0075h
  11112.     this command is identical to the SCSI Inquiry command
  11113. --------d-135502-----------------------------
  11114. INT 13 - Seagate ST01/ST02 - RESERVED
  11115.     AX = 5502h
  11116. --------d-135503-----------------------------
  11117. INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ)
  11118.     AX = 5503h
  11119.     DH = DTQ byte (see #0214)
  11120.     DL = drive ID (80h, 81h, ...)
  11121. Return: nothing
  11122.  
  11123. Bitfields for DTQ byte:
  11124. Bit(s)    Description    (Table 0214)
  11125.  7    reserved
  11126.  6    SCSI drive attached
  11127.  5    reserved
  11128.  4    selected drive is ST225N/NP (Paired)
  11129.  3    selected drive is ST225N
  11130.  2    Host Adapter checks parity on the selected drive
  11131.  1    selected drive has been installed
  11132.  0    Seagate installation software present
  11133. --------d-135504-----------------------------
  11134. INT 13 U - Seagate - ??? - RETURN IDENTIFICATION
  11135.     AX = 5504h
  11136.     DX = drive (bit 7 set for hard disk)
  11137. Return: CF clear if successful
  11138.         AX = 4321h if ST01/ST02h
  11139.         AX = 4322h if ??? Seagate controller
  11140.     CF set on error
  11141. SeeAlso: AX=5505h,AX=5514h
  11142. --------d-135504-----------------------------
  11143. INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION
  11144.     AX = 5504h
  11145.     DL = drive ID (80h, 81h, ...)
  11146. Return: AX = 4321h
  11147.     BL = selected drive number (00h, 01h)
  11148.     BH = number of drives attached to Host Adapter (max. 2)
  11149. --------d-135505-----------------------------
  11150. INT 13 - Seagate - ??? - PARK HEADS
  11151.     AX = 5505h
  11152.     DX = drive (bit 7 set for hard disk)
  11153. Return: CF clear if successful
  11154.     CF set on error
  11155. SeeAlso: AX=5504h,AX=5515h
  11156. --------d-135505-----------------------------
  11157. INT 13 - Seagate ST01/ST02 - PARK HEADS
  11158.     AX = 5505h
  11159.     DL = drive ID (80h, 81h, ...)
  11160.     DH = subfunction
  11161.         00h park heads (SCSI Stop command)
  11162.         01h un-park heads (SCSI Start command)
  11163. Return: nothing
  11164. --------d-135506-----------------------------
  11165. INT 13 - Seagate ST01/ST02 - SCSI Bus Parity
  11166.     AX = 5506h
  11167.     DL = drive ID (80h, 81h, ...)
  11168.     DH = subfunction
  11169.         00h disable parity check
  11170.         01h enable parity check
  11171.         02h return current parity setting
  11172. Return: AL = status
  11173.         00h parity checking disabled
  11174.         01h parity checking enabled
  11175. --------d-135507-----------------------------
  11176. INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
  11177.     AX = 5507h to 550Dh
  11178. Note:    officially listed as "reserved"
  11179. --------d-135514-----------------------------
  11180. INT 13 U - Seagate - ???
  11181.     AX = 5514h
  11182.     DX = drive (bit 7 set for hard disk)
  11183. Return: CF clear if successful
  11184.     CF set on error
  11185.     AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
  11186. SeeAlso: AX=5504h,AX=5515h
  11187. --------d-135515-----------------------------
  11188. INT 13 U - Seagate - PARK HEADS???
  11189.     AX = 5515h
  11190.     DX = drive (bit 7 set for hard disk)
  11191. Return: CF clear if successful
  11192.     CF set on error
  11193. Note:    appears to be identical to AX=5505h
  11194. SeeAlso: AX=5504h,AX=5505h
  11195. --------d-1359-------------------------------
  11196. INT 13 - SyQuest - Generic SCSI pass through
  11197.     AH = 59h
  11198.     CX = HOST_ID, 0-based
  11199.     DX = 80h
  11200.     ES:BX pointer to SCSI structure (see #0215)
  11201. Return: CF clear
  11202.     AH = 95h
  11203. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=1Fh"SyQuest"
  11204.  
  11205. Format of SyQuest SCSI structure:
  11206. Offset    Size    Description    (Table 0215)
  11207.  00h    WORD    opcode (see #0216)
  11208.  02h    BYTE    target's SCSI ID
  11209.  03h    BYTE    target's logical unit number
  11210.  04h    BYTE    data direction (00h no data xfer, 01h data in, FFh data out)
  11211.  05h    BYTE    host status
  11212.         00h successful
  11213.         01h selection time out
  11214.         02h data over-run or under-run
  11215.  06h    BYTE    target status at command completion
  11216.         00h successful
  11217.         02h check status
  11218.         08h busy
  11219.  07h    BYTE    command data block length
  11220.  08h    DWORD    request data length
  11221.  0Ch    DWORD    result data length (actual length of data transferred)
  11222.  10h    DWORD    -> CDB (see #2907,#2908,#2909)
  11223.  14h    DWORD    -> data buffer
  11224. Note:    The handler does not perform a 'Request Sense' command if there was an
  11225.       error
  11226.  
  11227. (Table 0216)
  11228. Values for SCSI opcode:
  11229.  00h    verify interface
  11230.     clears carry flag and returns if function is available
  11231.  01h    returns the ID of the INT 13h Handler in a NULL terminated string of
  11232.     length less than 40 byte including the terminator.
  11233.     The string is stored in the buffer pointed by p_buf.
  11234.  02h    device mapping info. The caller provides a one byte buffer.
  11235.     The handler stores the Int 13h Device ID (80h or above) in the buffer.
  11236.     It stores 0 if that target does not exists.
  11237.  03h    execute SCSI command
  11238.  04h    device reset
  11239.  05h    SCSI bus reset
  11240. SeeAlso: #0215
  11241. --------d-1370-------------------------------
  11242. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  11243.     AH = 70h
  11244.     ???
  11245. Return: ???
  11246. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  11247.       formatting program) make this call, presumably to EDVR.SYS (the
  11248.       partitioning driver)
  11249. SeeAlso: AH=ADh
  11250. ----------1375-------------------------------
  11251. INT 13 - ???
  11252.     AH = 75h
  11253.     ???
  11254. Return: AH = ???
  11255.     ???
  11256. Note:    intercepted by PC-Cache (v5.1 only)
  11257. ----------1376-------------------------------
  11258. INT 13 - ???
  11259.     AH = 76h
  11260.     ???
  11261. Return: AH = ???
  11262.     ???
  11263. Note:    intercepted by PC-Cache (v5.1 only)
  11264. --------c-137B00-----------------------------
  11265. INT 13 - NOW! v3.05 - GET INFORMATION
  11266.     AX = 7B00h
  11267.     CX:DX -> 1F8h-byte buffer for information record (see #0217)
  11268. Return: AX = 0000h
  11269.     BX = segment of main resident code
  11270.     ES = ???
  11271. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  11272. SeeAlso: AX=7B02h,AH=EFh
  11273.  
  11274. Format of NOW! information record:
  11275. Offset    Size    Description    (Table 0217)
  11276.  00h 80 BYTEs    name of directory from which NOW! was started
  11277.  50h 424 BYTEs    ???
  11278.  81h  ? BYTEs    array of bytes for ???
  11279.  F7h 250 BYTEs    array of 25 entries, one per drive???
  11280.     Offset    Size    Description
  11281.      00h  2 BYTEs    ???
  11282.      02h    WORD    ???
  11283.      04h    WORD    ???
  11284.      06h  4 BYTEs    ???
  11285. 1F1h  7 BYTEs    ???
  11286. --------c-137B01-----------------------------
  11287. INT 13 - NOW! v3.05 - ???
  11288.     AX = 7B01h
  11289. Return: DX = segment of ???
  11290. SeeAlso: AX=7B00h
  11291. --------c-137B02-----------------------------
  11292. INT 13 - NOW! v3.05 - SET INFORMATION
  11293.     AX = 7B02h
  11294.     BX = segment of ??? (10h above a PSP)
  11295.     CX:DX -> 1F8h-byte information record (see #0217)
  11296. Return: ???
  11297. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  11298. Note:    NOW! grabs the INT 24h value from the PSP reached via the segment in
  11299.       BX
  11300. SeeAlso: AX=7B00h
  11301. --------c-137B03-----------------------------
  11302. INT 13 - NOW! v3.05 - ???
  11303.     AX = 7B03h
  11304.     ???
  11305. Return: ???
  11306. SeeAlso: AX=7B00h,AX=7B04h
  11307. --------c-137B04-----------------------------
  11308. INT 13 - NOW! v3.05 - ???
  11309.     AX = 7B04h
  11310.     ???
  11311. Return: ???
  11312. SeeAlso: AX=7B03h
  11313. --------c-137B05-----------------------------
  11314. INT 13 - NOW! v3.05 - GET DISK ACCESSES???
  11315.     AX = 7B05h
  11316. Return: BX:AX = number of physical accesses???
  11317.     DX:CX = total disk accesses???
  11318. SeeAlso: AX=7B00h,AX=7B06h
  11319. --------c-137B06-----------------------------
  11320. INT 13 - NOW! v3.05 - GET ???
  11321.     AX = 7B06h
  11322.     BX = ???
  11323. Return: AX = 0000h
  11324.     BX = ???
  11325. SeeAlso: AX=7B05h,AX=7B07h
  11326. --------c-137B07-----------------------------
  11327. INT 13 - NOW! v3.05 - GET ???
  11328.     AX = 7B07h
  11329. Return: AX = ???
  11330.     BX = ???
  11331.     CX = ???
  11332.     DX = ???
  11333. SeeAlso: AX=7B06h
  11334. --------c-137B08-----------------------------
  11335. INT 13 - NOW! v3.05 - ???
  11336.     AX = 7B08h
  11337.     CX = ??? (default 00h)
  11338. Return: ???
  11339. SeeAlso: AX=7B00h
  11340. --------c-1380--CX6572-----------------------
  11341. INT 13 - FAST! v4.02+ - API
  11342.     AH = 80h
  11343.     CX = 6572h
  11344.     DX = 1970h
  11345.     ES:BX -> request packet (see #0219)
  11346.     AL = function number (see #0218)
  11347. Return: AH = status (except function 06h)
  11348.         00h if successful
  11349.         01h invalid function
  11350.         05h not supported by the installed variant
  11351.     CF clear if successful
  11352.     CF set on error
  11353.     AL may be destroyed
  11354. Program: FAST! is a disk cache by Future Computing Systems and marketed by
  11355.       BLOC Publishing Corp.
  11356. SeeAlso: AX=8001h,AX=8006h,AX=8007h
  11357. Index:    hotkeys;FAST!
  11358.  
  11359. (Table 0218)
  11360. Values for FAST! function:
  11361.  01h    get cache information (see AX=8001h)
  11362.  04h    disable cache
  11363.  05h    enable cache and reset statistics
  11364.  06h    installation check (see AX=8006h)
  11365.  07h    unhook interrupts (see AX=8007h)
  11366.  09h    flush cache
  11367.  0Ah    (v4.02+) enable staged writes
  11368.  0Bh    (v4.02+) disable staged writes
  11369.  0Ch    (v4.02+) enable beep on flush
  11370.  0Dh    (v4.02+) disable beep on flush
  11371.  0Eh    ???
  11372.  0Fh    ???
  11373.  10h    (v4.12+) enable hotkeys
  11374.  11h    (v4.12+) disable hotkeys
  11375.  12h    (v4.13+) set idle delay
  11376.  13h    (v4.13+) set flush dirty percentage
  11377.  14h    (v5.00+) enable mouse checks
  11378.  15h    (v5.00+) disable mouse checks
  11379.  16h    (v5.00d+) reduce cache size to minimum
  11380.  17h    (v5.00d+) increase cache size to maximum
  11381.  
  11382. Format of FAST! request packet:
  11383. Offset    Size    Description    (Table 0219)
  11384.  00h    DWORD    pointer to 19-byte signature string (see #0220)
  11385.  04h    DWORD    pointer to buffer for data (if needed by function)
  11386.  
  11387. (Table 0220)
  11388. Values for FAST! v4.04-v5.03 signature string:
  11389.  13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15h
  11390. --------c-138001CX6572-----------------------
  11391. INT 13 - FAST! v4.02+ - GET CACHE INFORMATION
  11392.     AX = 8001h
  11393.     CX = 6572h
  11394.     DX = 1970h
  11395.     ES:BX -> request packet (see #0221)
  11396. Return: AH = 00h if successful
  11397. SeeAlso: AH=80h,AX=8006h
  11398.  
  11399. Format of FAST! request packet:
  11400. Offset    Size    Description    (Table 0221)
  11401.  00h    DWORD    -> 19-byte signature string (see #0220)
  11402.  04h    DWORD    -> buffer for cache information (see #0222)
  11403.  
  11404. Format of FAST! cache information (v5.00-5.03):
  11405. Offset    Size    Description    (Table 0222)
  11406.  00h    WORD    binary version number of FAST! (v5.00 = 01F4h)
  11407.  02h    BYTE    revision letter (61h = X.XXa, 62h = X.XXb, etc.)
  11408.  03h    BYTE    FAST! variant
  11409.         (01h = FASTE, 02h = FASTX BIOS, 04h = FASTC, 20h = FASTX XMS)
  11410.  04h    DWORD    total number of read requests
  11411.  08h    DWORD    number of physical disk reads
  11412.  0Ch    DWORD    grabbed hash buckets
  11413.  10h    DWORD    "st_386mem"
  11414.  14h    DWORD    total number of writes (only counted when staging enabled)
  11415.  18h    DWORD    number of physical disk writes (only when staging enabled)
  11416.  1Ch    DWORD    number of write errors while flushing cache
  11417.  20h    WORD    flags1 (see #0223)
  11418.  22h    WORD    flags
  11419.         bit 0: ???
  11420.         bit 1: staged writes enabled
  11421.  24h    WORD    ???
  11422.  26h    WORD    maximum cache size in KB
  11423.  28h    WORD    minimum cache size in KB
  11424.  2Ah    WORD    segment of first cache buffer (FASTC)
  11425.         segment of EMS page frame (FASTE)
  11426.         XMS handle (FASTX XMS)
  11427.  2Ch    WORD    number of hash buckets containing no entries
  11428.  2Eh    WORD    number of hash buckets containing one entry
  11429.  30h    WORD    number of hash buckets containing two entries
  11430.  32h    WORD    number of hash buckets containing three entries
  11431.  34h    WORD    number of hash buckets containing four entries
  11432.  36h    WORD    number of hash buckets containing five entries
  11433.  38h    WORD    maximum contiguous sectors
  11434.  3Ah    WORD    hash factor
  11435.  3Ch    WORD    number of paragraphs of memory used below 1M
  11436.  3Eh    WORD    entries per hash bucket
  11437.  40h    WORD    idle delay in seconds
  11438.  42h  2 BYTEs    ???
  11439.  44h    WORD    staged write threshold percentage
  11440.  46h  2 BYTEs    ???
  11441.  48h    WORD    number of dirty sectors
  11442.  4Ah    WORD    number of staged write buffers
  11443.  4Ch    WORD    current cache size in KB
  11444.  4Eh    WORD    beep frequency in Hz
  11445.  50h    WORD    ???
  11446.  52h    WORD    ???
  11447.  
  11448. Bitfields for FAST! flags1:
  11449. Bit(s)    Description    (Table 0223)
  11450.  0    beep on flush
  11451.  3    hotkeys enabled
  11452.  4    mouse idle check enabled
  11453.  8    caching enabled
  11454.  13    ???
  11455. --------c-138006CX6572-----------------------
  11456. INT 13 - FAST! v4.02+ - INSTALLATION CHECK
  11457.     AX = 8006h
  11458.     CX = 6572h
  11459.     DX = 1970h
  11460.     ES:BX -> request packet (see #0224)
  11461. Return: AX = 1965h if installed
  11462. SeeAlso: AH=80h,AX=8001h,AX=8007h
  11463.  
  11464. Format of FAST! request packet:
  11465. Offset    Size    Description    (Table 0224)
  11466.  00h    DWORD    -> 19-byte signature string (see #0220)
  11467. --------c-138007CX6572-----------------------
  11468. INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS
  11469.     AX = 8007h
  11470.     CX = 6572h
  11471.     DX = 1970h
  11472.     ES:BX -> request packet (see #0225)
  11473. Return: AX = 1965h if installed
  11474. SeeAlso: AH=80h,AX=8006h
  11475. Index:    uninstall;FAST!
  11476.  
  11477. Format of FAST! request packet:
  11478. Offset    Size    Description    (Table 0225)
  11479.  00h    DWORD    -> 19-byte signature string (see #0220)
  11480. --------c-1381--SI4358-----------------------
  11481. INT 13 - Super PC-Kwik v3.20+ - ???
  11482.     AH = 81h
  11483.     SI = 4358h
  11484.     ???
  11485. Return: ???
  11486. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  11487.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  11488.       to PC-Kwik v3.20 and PC-Cache v5.5 to PC-Kwik v3.27)
  11489.     returns immediately in PC-Cache v5.x
  11490. Index:    PC-Cache|Qualitas Qcache
  11491. --------c-1382--SI4358-----------------------
  11492. INT 13 - Super PC-Kwik v3.20+ - ???
  11493.     AH = 82h
  11494.     SI = 4358h
  11495.     ???
  11496. Return: AL = ???
  11497. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  11498.       Super PC-Kwik, and thus support this call
  11499. SeeAlso: AH=84h
  11500. Index:    PC-Cache|Qualitas Qcache
  11501. --------c-1383--SI4358-----------------------
  11502. INT 13 - Super PC-Kwik v3.20+ - ???
  11503.     AH = 83h
  11504.     SI = 4358h
  11505.     AL = ???
  11506.     ES:BX -> ???
  11507.     ???
  11508. Return: ???
  11509. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  11510.       Super PC-Kwik, and thus support this call
  11511. SeeAlso: AH=85h
  11512. Index:    PC-Cache|Qualitas Qcache
  11513. --------c-1384--SI4358-----------------------
  11514. INT 13 - Super PC-Kwik v3.20+ - ???
  11515.     AH = 84h
  11516.     SI = 4358h
  11517.     AL = ???
  11518.     ???
  11519. Return: AL = ???
  11520. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  11521.       Super PC-Kwik, and thus support this call
  11522. SeeAlso: AH=82h
  11523. Index:    PC-Cache|Qualitas Qcache
  11524. --------c-1385--SI4358-----------------------
  11525. INT 13 - Super PC-Kwik v3.20+ - ???
  11526.     AH = 85h
  11527.     SI = 4358h
  11528.     AL = ???
  11529.     DL = ???
  11530.     ???
  11531. Return: ???
  11532. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  11533.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  11534.       to PC-Kwik v3.20)
  11535. SeeAlso: AH=83h
  11536. Index:    PC-Cache|Qualitas Qcache
  11537. --------c-1386--SI4358-----------------------
  11538. INT 13 - Super PC-Kwik v4.00+ - ???
  11539.     AH = 86h
  11540.     SI = 4358h
  11541.     ???
  11542. Return: ???
  11543. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  11544.       thus supports this call
  11545. Index:    Qualitas Qcache
  11546. --------c-1387--SI4358-----------------------
  11547. INT 13 - Super PC-Kwik v4.00+ - ???
  11548.     AH = 87h
  11549.     SI = 4358h
  11550.     ???
  11551. Return: AH = status??? (00h)
  11552.     CX = ???
  11553.     DX = ??? (0000h)
  11554. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  11555.       thus supports this call
  11556. Index:    Qualitas Qcache
  11557. --------c-1388--SI4358-----------------------
  11558. INT 13 - Super PC-Kwik v4.00+ - ???
  11559.     AH = 88h
  11560.     SI = 4358h
  11561.     ???
  11562. Return: AH = status??? (00h)
  11563.     CX = ???
  11564.     DX = ??? (0000h)
  11565. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  11566.       thus supports this call
  11567. Index:    Qualitas Qcache
  11568. --------c-1389--SI4358-----------------------
  11569. INT 13 - Super PC-Kwik v5.10+ - ???
  11570.     AH = 89h
  11571.     SI = 4358h
  11572.     ???
  11573. Return: ???
  11574. --------c-138A--SI4358-----------------------
  11575. INT 13 - Super PC-Kwik v5.10+ - ???
  11576.     AH = 8Ah
  11577.     SI = 4358h
  11578.     ???
  11579. Return: ???
  11580. --------c-138EED-----------------------------
  11581. INT 13 - HyperDisk v4.01+ - ???
  11582.     AX = 8EEDh
  11583.     ???
  11584. Return: ???
  11585. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  11586. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AX=DF00h
  11587. --------c-138EEE-----------------------------
  11588. INT 13 - HyperDisk v4.01+ - ???
  11589.     AX = 8EEEh
  11590. Return: CF set
  11591.     AX = CS of HyperDisk resident code
  11592.     ???
  11593. Note:    identical to AX=8EEFh in HYPERDKX v4.21-4.30
  11594. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  11595. --------c-138EEF-----------------------------
  11596. INT 13 - HyperDisk v4.01+ - ???
  11597.     AX = 8EEFh
  11598. Return: CF set
  11599.     AX = CS of HyperDisk resident code
  11600.     ???
  11601. Note:    identical to AX=8EEEh in HYPERDKX v4.21-4.30
  11602. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  11603. --------c-1392--SI4358-----------------------
  11604. INT 13 - Super PC-Kwik v5.10+ - ???
  11605.     AH = 92h
  11606.     SI = 4358h
  11607.     ???
  11608. Return: AH = status??? (00h)
  11609.     DL = ???
  11610. SeeAlso: AH=93h
  11611. --------c-1393--SI4358-----------------------
  11612. INT 13 - Super PC-Kwik v5.10+ - ???
  11613.     AH = 93h
  11614.     SI = 4358h
  11615.     ???
  11616. Return: AH = status??? (00h)
  11617.     AL = ???
  11618. SeeAlso: AH=92h
  11619. --------c-1394--SI4358-----------------------
  11620. INT 13 - Super PC-Kwik v5.10+ - ???
  11621.     AH = 94h
  11622.     SI = 4358h
  11623.     ???
  11624. Return: ???
  11625. --------c-1395--SI4358-----------------------
  11626. INT 13 - Super PC-Kwik v5.10+ - ???
  11627.     AH = 95h
  11628.     SI = 4358h
  11629.     ???
  11630. Return: AH = status??? (00h)
  11631.     DX = ???
  11632. --------c-1396--SI4358-----------------------
  11633. INT 13 - Super PC-Kwik v5.10+ - ???
  11634.     AH = 96h
  11635.     SI = 4358h
  11636.     AL = ??? (01h)
  11637.     BX = ??? (0790h)
  11638.     DL = ???
  11639. Return: AH = status??? (00h)
  11640.     DX = ???
  11641. --------c-1397--SI4358-----------------------
  11642. INT 13 - Super PC-Kwik v5.10+ - ???
  11643.     AH = 97h
  11644.     SI = 4358h
  11645.     ???
  11646. Return: ???
  11647. --------c-1398--SI4358-----------------------
  11648. INT 13 - Super PC-Kwik v5.10+ - ???
  11649.     AH = 98h
  11650.     SI = 4358h
  11651.     ???
  11652. Return: ???
  11653. --------c-1399--SI4358-----------------------
  11654. INT 13 - Super PC-Kwik v5.10+ - ???
  11655.     AH = 99h
  11656.     SI = 4358h
  11657.     ???
  11658. Return: ???
  11659. --------c-139A--SI4358-----------------------
  11660. INT 13 - Super PC-Kwik v5.10+ - ???
  11661.     AH = 9Ah
  11662.     SI = 4358h
  11663.     ???
  11664. Return: ???
  11665. --------c-139B--SI4358-----------------------
  11666. INT 13 - Super PC-Kwik v5.10+ - ???
  11667.     AH = 9Bh
  11668.     SI = 4358h
  11669.     ???
  11670. Return: ???
  11671. --------c-139C--SI4358-----------------------
  11672. INT 13 - Super PC-Kwik v5.10+ - ???
  11673.     AH = 9Ch
  11674.     SI = 4358h
  11675.     ???
  11676. Return: ???
  11677. Note:    functions 9Ch and 9Dh are the only ones which are fully reentrant; all
  11678.       other PC-Kwik API calls (INT 13/81h-B0h) return AX=0200h and CF clear
  11679.       if a previous call is still in progress
  11680. --------c-139D--SI4358-----------------------
  11681. INT 13 - Super PC-Kwik v5.10+ - ???
  11682.     AH = 9Dh
  11683.     SI = 4358h
  11684.     ???
  11685. Return: ???
  11686. --------c-13A0--SI4358-----------------------
  11687. INT 13 - Super PC-Kwik v3.20+ - GET RESIDENT CODE SEGMENT
  11688.     AH = A0h
  11689.     SI = 4358h
  11690. Return: AX = segment of resident code
  11691. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  11692.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.5
  11693.       corresponds to PC-Kwik v3.27)
  11694. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  11695. Index:    PC-Cache|Qualitas Qcache
  11696. --------c-13A1--SI4358-----------------------
  11697. INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE
  11698.     AH = A1h
  11699.     SI = 4358h
  11700. Return: CF clear
  11701.     AH = 00h (v5.10)
  11702. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  11703.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  11704.       corresponds to PC-Kwik v3.20)
  11705. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
  11706. Index:    PC-Cache|Qualitas Qcache
  11707. --------c-13A2--SI4358-----------------------
  11708. INT 13 - Super PC-Kwik v3.20+ - ???
  11709.     AH = A2h
  11710.     SI = 4358h
  11711.     ???
  11712. Return: ???
  11713. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  11714.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  11715.       corresponds to PC-Kwik v3.20)
  11716. Index:    PC-Cache|Qualitas Qcache
  11717. --------c-13A3--SI4358-----------------------
  11718. INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE
  11719.     AH = A3h
  11720.     SI = 4358h
  11721. Return: CF clear
  11722. SeeAlso: AH=A4h
  11723. --------c-13A4--SI4358-----------------------
  11724. INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE
  11725.     AH = A4h
  11726.     SI = 4358h
  11727. Return: CF clear
  11728. SeeAlso: AH=A3h
  11729. --------c-13A5--SI4358-----------------------
  11730. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION
  11731.     AH = A5h
  11732.     SI = 4358h
  11733. Return: AX = ???
  11734.     SI = ???
  11735. Notes:    called and used internally by Super PC-Kwik when a program terminates
  11736.       via INT 21/AH=00h, INT 21/AH=31h, or INT 21/AH=4Ch
  11737.     this call is not supported by Qualitas Qcache 4.00
  11738. Index:    PC-Cache
  11739. SeeAlso: AH=A6h,AH=A9h,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
  11740. --------c-13A6--SI4358-----------------------
  11741. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION
  11742.     AH = A6h
  11743.     SI = 4358h
  11744.     DS:DX -> ASCIZ program name
  11745.     ES:BX -> EXEC data block (see #1276 at INT 21/AH=4Bh)
  11746. Return: ???
  11747. Note:    called and used internally by Super PC-Kwik when a program is loaded
  11748.       with INT 21/AX=4B00h
  11749. SeeAlso: AH=A5h,AH=A9h,INT 21/AH=4Bh
  11750. --------c-13A7--SI4358-----------------------
  11751. INT 13 CU - Super PC-Kwik 5.1 - ???
  11752.     AH = A7h
  11753.     SI = 4358h
  11754. Return: ???
  11755. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  11756. SeeAlso: AH=A5h,AH=A6h,AH=A8h
  11757. --------v-13A759-----------------------------
  11758. INT 13 U - Novell DOS 7 - SDRes v27.03 - ???
  11759.     AX = A759h
  11760. Return: AX = 59A7h if installed
  11761.         DX:BX -> ??? data
  11762. Program: SDRes is the resident portion of the Search&Destroy antiviral by
  11763.       Fifth Generation Systems, as bundled with Novell DOS 7
  11764. SeeAlso: INT 21/AH=0Eh/DL=ADh
  11765. --------c-13A8--SI4358-----------------------
  11766. INT 13 CU - Super PC-Kwik 5.1 - ???
  11767.     AH = A8h
  11768.     SI = 4358h
  11769. Return: ???
  11770. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  11771. SeeAlso: AH=A5h,AH=A6h,AH=A7h
  11772. --------c-13A9--SI4358-----------------------
  11773. INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION
  11774.     AH = A9h
  11775.     SI = 4358h
  11776. Return: ???
  11777. Note:    called and used internally by Super PC-Kwik when an application issues
  11778.       INT 21/AH=4Dh
  11779. SeeAlso: AH=A5h,AH=A6h,INT 21/AH=4Dh
  11780. --------c-13AA--SI4358-----------------------
  11781. INT 13 - Super PC-Kwik v4+ - ???
  11782.     AH = AAh
  11783.     SI = 4358h
  11784.     ???
  11785. Return: ???
  11786. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  11787.       this call
  11788. --------c-13AB--SI4358-----------------------
  11789. INT 13 - Super PC-Kwik v4+ - ???
  11790.     AH = ABh
  11791.     SI = 4358h
  11792.     ???
  11793. Return: ???
  11794. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  11795.       this call
  11796. --------c-13AC--SI4358-----------------------
  11797. INT 13 - Super PC-Kwik v4+ - ???
  11798.     AH = ACh
  11799.     SI = 4358h
  11800.     ???
  11801. Return: ???
  11802. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  11803.       this call
  11804. --------d-13AD-------------------------------
  11805. INT 13 - Priam HARD DISK CONTROLLER???
  11806.     AH = ADh
  11807.     ???
  11808. Return: ???
  11809. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  11810.       to check the ROM type on the controller for their hard disk kits
  11811. SeeAlso: AH=70h
  11812. --------c-13AD--SI4358-----------------------
  11813. INT 13 - Super PC-Kwik v4+ - ???
  11814.     AH = ADh
  11815.     SI = 4358h
  11816.     ???
  11817. Return: ???
  11818. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  11819.       this call
  11820. --------c-13AE--SI4358-----------------------
  11821. INT 13 - Super PC-Kwik v5.10+ - ???
  11822.     AH = AEh
  11823.     SI = 4358h
  11824.     ???
  11825. Return: ???
  11826. --------c-13B0--SI4358-----------------------
  11827. INT 13 - Super PC-Kwik v3.20+ - ???
  11828.     AH = B0h
  11829.     SI = 4358h
  11830.     ???
  11831. Return: ???
  11832. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC-Kwik, and thus
  11833.       supports this call; Qualitas Qcache does not support it
  11834. Index:    PC-Cache
  11835. --------v-13EC00-----------------------------
  11836. INT 13 - VIRUS - "Tiso" - INSTALLATION CHECK
  11837.     AX = EC00h
  11838. Return: CF clear if installed
  11839. SeeAlso: AH=F2h,INT 12/AX=4350h/BX=4920h
  11840. --------d-13EE-------------------------------
  11841. INT 13 - SWBIOS - SET 1024-CYLINDER FLAG
  11842.     AH = EEh
  11843.     DL = drive number (80h, 81h)
  11844. Return: CF clear
  11845.        AH = 00h
  11846. Program: SWBIOS is a TSR by Ontrack Computer Systems
  11847. Desc:    the following INT 13 call will add 1024 to the specified cylinder
  11848.       number to get the actual cylinder number desired
  11849. Notes:    the flag is cleared by all INT 13 calls except AH=EEh and AH=EFh
  11850.     Disk Manager also supports these calls
  11851.     this function is also supported by HyperDisk v4.01+ and PC-Cache v5.5+,
  11852.       in order to allow caching of drives using SWBIOS to access more than
  11853.       1024 cylinders
  11854.     for software which supports that call, this function is equivalent to
  11855.       calling AH=EFh with CX=0400h
  11856. SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AX=DF00h
  11857. Index:    PC-Cache;huge disks|Disk Manager
  11858. --------c-13EF-------------------------------
  11859. INT 13 - Ontrack Drive Rocket - SET CYLINDER OFFSET
  11860.     AH = EFh
  11861.     CX = cylinder offset for next INT 13 call
  11862.     DL = drive number (80h, 81h)
  11863. Return: CF clear
  11864.         AH = 00h
  11865. Program: Drive Rocket is a drive accelerator by Ontrack Computer Systems for
  11866.       IDE drives supporting the read multiple and write multiple commands
  11867. Desc:    the following INT 13 call will add the number given by this call to
  11868.       the specified cylinder to get the actual cylinder number, then reset
  11869.       the offset to zero
  11870. Note:    this function is also supported by the NOW! disk cache, and presumably
  11871.       newer versions of SWBIOS and Disk Manager
  11872.     for software which supports this call, AH=EEh is equivalent to calling
  11873.       this function with CX=0400h
  11874.     the cylinder offset is reset to 0 by all INT 13 called except AH=EEh
  11875.       and AH=EFh
  11876. SeeAlso: AX=7B00h
  11877. --------v-13F2-------------------------------
  11878. INT 13 - VIRUS - "Neuroquila" - INSTALLATION CHECK
  11879.     AH = F2h
  11880. Return: CF ??? if installed
  11881. SeeAlso: AX=EC00h,INT 12/AX=4350h/BX=4920h,INT 21/AX=0B56h
  11882. --------d-13F9-------------------------------
  11883. INT 13 - SWBIOS - INSTALLATION CHECK
  11884.     AH = F9h
  11885.     DL = drive number (80h,81h)
  11886. Return: CF clear
  11887.         DX = configuration word
  11888.         bit 15 set if other SWBIOS extensions available
  11889.     CF set on error
  11890. Program: SWBIOS is a TSR by Ontrack Computer Systems
  11891. Note:    Disk Manager also supports these calls
  11892. SeeAlso: AH=EEh
  11893. Index:    Disk Manager
  11894. --------v-13FA--DX5945-----------------------
  11895. INT 13 - PC Tools v8+ VSAFE, VWATCH - API
  11896.     AH = FAh
  11897.     DX = 5945h
  11898.     AL = function (00h-07h)
  11899. Return: varies by function
  11900.     if not installed:
  11901.         CF set
  11902.         AH = 01h
  11903. Note:    this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
  11904.       so it is listed in its entirety under INT 16/AX=FA00h and following
  11905. SeeAlso: INT 16/AX=FA00h
  11906. --------v-13FD50------------------------
  11907. INT 13 - VIRUS - "Predator" - INSTALLATION CHECK
  11908.     AX = FD50h
  11909. Return: AX = 50FDh if resident
  11910. SeeAlso: AX=5001h"VIRUS",INT 16/AH=DDh"VIRUS"
  11911. --------d-13FE-------------------------------
  11912. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  11913.     AH = FEh
  11914.     DL = drive number (80h, 81h)
  11915. Return: CF clear
  11916.     DX = number of cylinders beyond 1024 on drive
  11917. Program: SWBIOS is a TSR by Ontrack Computer Systems
  11918. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  11919.     BIOS without this extension would return count modulo 1024
  11920.     Disk Manager also supports these calls
  11921. SeeAlso: AH=EEh
  11922. ----------13FF-------------------------------
  11923. INT 13 - Windows95 - ???
  11924.     AH = FFh
  11925.     DL - drive number (80h)
  11926. Return: ???
  11927. Note:    this function is called by the Windows95 Master Boot Record
  11928. --------B-13FF-------------------------------
  11929. INT 13 - IBM SurePath BIOS - Officially "Private" Function
  11930.     AH = FFh
  11931. --------U-13FFFFBHAA-------------------------
  11932. INT 13 - UNIQUE UX Turbo Utility - SET TURBO MODE
  11933.     AX = FFFFh
  11934.     BH = AAh
  11935.     BL = subfunction
  11936.         00h installation check
  11937.         Return: AX = 1234h if installed
  11938.         01h turn on Turbo mode
  11939.         02h turn off Turbo mode
  11940.         03h set Turbo mode according to hardware switch
  11941.         04h set disk access to Turbo mode
  11942.         05h set disk access to Normal mode
  11943. Return: nothing
  11944. SeeAlso: INT 15/AH=DFh
  11945. Index:    installation check;UNIQUE UX Turbo Utility
  11946. --------S-14---------------------------------
  11947. INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  11948. Note:    the installation check for this driver is to determine whether the
  11949.       "~DOSXAM~" character device exists
  11950. Index:    installation check;Digiboard DigiCHANNEL
  11951. --------S-1400-------------------------------
  11952. INT 14 - SERIAL - INITIALIZE PORT
  11953.     AH = 00h
  11954.     AL = port parameters (see #0226)
  11955.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  11956. Return: AH = line status (see #0230)
  11957.         FFh if error on Digiboard XAPCM232.SYS
  11958.     AL = modem status (see #0231)
  11959. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  11960.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  11961.       bps will result in 4800 bps
  11962.     various network and serial-port drivers support the standard BIOS
  11963.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  11964.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  11965. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=57h
  11966. SeeAlso: AX=8000h"ARTICOM",AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
  11967. SeeAlso: MEM 0040h:0000h,PORT 03F8h"Serial"
  11968.  
  11969. Bitfields for serial port parameters:
  11970. Bit(s)    Description    (Table 0226)
  11971.  7-5    data rate (110,150,300,600,1200,2400,4800,9600 bps)
  11972.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  11973.  2    stop bits (set = 2, clear = 1)
  11974.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  11975. SeeAlso: #0228,#0233,#0234,#0235
  11976. --------S-1400-------------------------------
  11977. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  11978.     AH = 00h
  11979.     AL = initializing parameters
  11980.         7 - 6 - 5       4 - 3     2      1 - 0
  11981.         -BAUD RATE-       PARITY   STOP   WORD
  11982.                     BITS  LENGTH
  11983.         000 19200 bd   00 none  0: 1  00: 5
  11984.         001 38400 bd   01 odd   1: 2  01: 6
  11985.         010      300 bd   11 even      10: 7
  11986.         011      600 bd          11: 8
  11987.         100     1200 bd
  11988.         101     2400 bd
  11989.         110     4800 bd
  11990.         111     9600 bd (4800 on PCjr)
  11991.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  11992. Return: AH = RS-232 status code bits (see #0227)
  11993.     AL = modem status bits
  11994.         bit 3: always 1
  11995.         bit 7: DCD - carrier detect
  11996. SeeAlso: #0226,AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
  11997.  
  11998. Bitfields for FOSSIL RS-232 status:
  11999. Bit(s)    Description    (Table 0227)
  12000.  0    RDA - input data is available in buffer
  12001.  1    OVRN - data has been lost
  12002.  5    THRE - room is available in output buffer
  12003.  6    TSRE - output buffer empty
  12004. --------S-1400-------------------------------
  12005. INT 14 - Tandy 2000 - SERIAL - RESET COMM PORT
  12006.     AH = 00h
  12007.     AL = RS-232C parameters (see #0228)
  12008.     DL = port number
  12009.     DH = protocol
  12010.         bit 0: use XON/XOFF on received data
  12011.         bit 1: use XON/XOFF when transmitting
  12012. Return: AH = line status (see #0230)
  12013.     AL = modem status (see #0231)
  12014. Note:    this interrupt is identical to INT 53 on the Tandy 2000
  12015. SeeAlso: AH=04h"Tandy 2000",INT 53"Tandy 2000"
  12016. --------S-1400-------------------------------
  12017. INT 14 - MBBIOS - INITIALIZE PORT
  12018.     AH = 00h
  12019.     AL = port parameters (see #0228)
  12020.     DX = port number
  12021. Return: AH = line status (see #0230)
  12022.     AL = modem status (see #0231)
  12023. Note:    MBBIOS was written by H. Roy Engehausen
  12024. SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS",AH=09h"MBBIOS"
  12025.  
  12026. Bitfields for MBBIOS port parameters:
  12027. Bit(s)    Description    (Table 0228)
  12028.  7-5    data rate
  12029.     (normally 110,150,300,600,1200,2400,4800,9600 bps;
  12030.     9600,14400,19200,28800,38400,57600,115200,330400 bps
  12031.     if the high-speed option is set)
  12032.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  12033.  2    stop bits (set = 2, clear = 1)
  12034.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  12035. SeeAlso: #0226
  12036. --------N-1400--DXFFFF-----------------------
  12037. INT 14 - Connection Manager - MODIFY DEFAULT CONNECTION PARAMETERS
  12038.     AH = 00h
  12039.     DX = FFFFh
  12040.     ES:DI -> vector string specifying new parameters
  12041. Return: AH = return code (00h,03h) (see #0229)
  12042. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  12043.       serial ports over an IPX or NetBIOS-based network
  12044. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  12045.       function, but redirects the port over the network; if DX is any other
  12046.       value, the call is chained
  12047. SeeAlso: AH=04h/DX=FFFFh,AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  12048.  
  12049. (Table 0229)
  12050. Values for Connection Manager return code:
  12051.  00h    successful
  12052.  01h    no such connection
  12053.  02h    invalid connection ID
  12054.  03h    invalid subvector found
  12055.  04h    communication error (check BH)
  12056.  06h    insufficient resources, retry later
  12057.  FFh    no data available
  12058. --------S-1401-------------------------------
  12059. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  12060.     AH = 01h
  12061.     AL = character to write
  12062.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  12063. Return: AH bit 7 clear if successful
  12064.     AH bit 7 set on error
  12065.     AH bits 6-0 = port status (see #0230)
  12066. Notes:    various network and serial-port drivers support the standard BIOS
  12067.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  12068.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  12069. SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h,MEM 0040h:007Ch
  12070. --------N-1401--DXFFFF-----------------------
  12071. INT 14 - Connection Manager - SEND CHARACTER
  12072.     AH = 01h
  12073.     DX = FFFFh
  12074.     BH = character to send
  12075. Return: AH = return code (00h-02h,06h) (see #0229)
  12076. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  12077.       function, but redirects the port over the network; if DX is any other
  12078.       value, the call is chained
  12079.     this function is provided primarily for compatibility; AH=06h/DX=FFFFh
  12080.       is the preferred function because it provides better performance
  12081. SeeAlso: AH=02h/DX=FFFFh,AH=06h/DX=FFFFh,AH=09h/DX=FFFFh
  12082. --------S-1402-------------------------------
  12083. INT 14 - SERIAL - READ CHARACTER FROM PORT
  12084.     AH = 02h
  12085.     AL = 00h (ArtiCom)
  12086.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  12087. Return: AH = line status (see #0230)
  12088.     AL = received character if AH bit 7 clear
  12089. Notes:    will timeout if DSR is not asserted, even if function 03h returns
  12090.       data ready
  12091.     various network and serial-port drivers support the standard BIOS
  12092.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  12093.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  12094. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  12095. --------S-1402-------------------------------
  12096. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  12097.     AH = 02h
  12098.     DX = port number (0-3)
  12099. Return: AL = character received
  12100.     AH = 00h
  12101. SeeAlso: AH=01h,AH=02h"SERIAL"
  12102. --------N-1402--DXFFFF-----------------------
  12103. INT 14 - Connection Manager - RECEIVE CHARACTER
  12104.     AH = 02h
  12105.     DX = FFFFh
  12106.     BH = character to send
  12107. Return: AH = return code (00h-02h,04h,FFh) (see #0229)
  12108.     BH = line status (see #0230)
  12109.     AL = received character (if any)
  12110. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  12111.       function, but redirects the port over the network; if DX is any other
  12112.       value, the call is chained
  12113.     this function is provided primarily for compatibility; AH=07h/DX=FFFFh
  12114.       is the preferred function because it provides better performance
  12115. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh,AH=06h/DX=FFFFh
  12116. --------S-1403-------------------------------
  12117. INT 14 - SERIAL - GET PORT STATUS
  12118.     AH = 03h
  12119.     AL = 00h (ArtiCom)
  12120.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  12121. Return: AH = line status (see #0230)
  12122.     AL = modem status (see #0231)
  12123.     AX = 9E00h if disconnected (ArtiCom)
  12124. Note:    the 04/08/93 Compaq system ROM uses only the low two bits of DX
  12125. SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
  12126.  
  12127. Bitfields for serial line status:
  12128. Bit(s)    Description    (Table 0230)
  12129.  7    timeout
  12130.  6    transmit shift register empty
  12131.  5    transmit holding register empty
  12132.  4    break detected
  12133.  3    framing error
  12134.  2    parity error
  12135.  1    overrun error
  12136.  0    receive data ready
  12137. Note:    for COMM-DRV, if bit 7 is set, an error occurred, and may be retrieved
  12138.       through a separate call (see AX=8000h"COMM-DRV")
  12139.  
  12140. Bitfields for modem status:
  12141. Bit(s)    Description    (Table 0231)
  12142.  7    carrier detect
  12143.  6    ring indicator
  12144.  5    data set ready
  12145.  4    clear to send
  12146.  3    delta carrier detect
  12147.  2    trailing edge of ring indicator
  12148.  1    delta data set ready
  12149.  0    delta clear to send
  12150. --------N-1403--DXFFFF-----------------------
  12151. INT 14 - Connection Manager - RETURN COMMUNICATION PORT STATUS
  12152.     AH = 03h
  12153.     DX = FFFFh
  12154.     AL = connection ID
  12155. Return: AH = return code (00h-02h) (see #0229)
  12156.     BH = line status (see #0232)
  12157.     BL = modem status (see #0231) (only bits 4,5,7; all others zero)
  12158. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  12159.       function, but redirects the port over the network; if DX is any other
  12160.       value, the call is chained
  12161. SeeAlso: AH=00h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Ah/DX=FFFFh
  12162.  
  12163. Bitfields for Connection Manager line status:
  12164. Bit(s)    Description    (Table 0232)
  12165.  7    CTS changed
  12166.  6    current CTS state
  12167.  5    timeout
  12168.  4    break
  12169.  3    framing error
  12170.  2    parity error
  12171.  1    overrun
  12172.  0    current carrier state (0 active, 1 no carrier)
  12173. --------S-1404-------------------------------
  12174. INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  12175.     AH = 04h
  12176.     AL = break status
  12177.         00h if break
  12178.         01h if no break
  12179.     BH = parity (see #0233)
  12180.     BL = number of stop bits
  12181.         00h one stop bit
  12182.         01h two stop bits (1.5 if 5 bit word length)
  12183.     CH = word length (see #0234)
  12184.     CL = bps rate (see #0235)
  12185.     DX = port number
  12186. Return: AX = port status code (see #0230,#0231)
  12187. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  12188.  
  12189. (Table 0233)
  12190. Values for serial port parity:
  12191.  00h    no parity
  12192.  01h    odd parity
  12193.  02h    even parity
  12194.  03h    stick parity odd
  12195.  04h    stick parity even
  12196. SeeAlso: #0226,#0234,#0235,#0236
  12197.  
  12198. (Table 0234)
  12199. Values for serial port word length:
  12200.  00h    5 bits
  12201.  01h    6 bits
  12202.  02h    7 bits
  12203.  03h    8 bits
  12204. SeeAlso: #0226,#0233,#0235,#0271
  12205.  
  12206. (Table 0235)
  12207. Values for serial port bps rate:
  12208.  00h    110 (19200 if ComShare installed)
  12209.  01h    150 (38400 if ComShare installed)
  12210.  02h    300
  12211.  03h    600 (14400 if ComShare installed)
  12212.  04h    1200
  12213.  05h    2400
  12214.  06h    4800 (28800 if ComShare installed)
  12215.  07h    9600
  12216.  08h    19200
  12217. ---ComShare---
  12218.  09h    38400
  12219.  0Ah    57600
  12220.  0Bh    115200
  12221. SeeAlso: #0226,#0233,#0235,#0272,#0279,AH=36h,#0290,#0530,#2609
  12222. --------S-1404-------------------------------
  12223. INT 14 - Tandy 2000 - SERIAL - FLUSH COMM BUFFER
  12224.     AH = 04h
  12225.     DL = port number
  12226.     DH = protocol
  12227.         bit 0: use XON/XOFF on received data
  12228.         bit 1: use XON/XOFF when transmitting
  12229. Return: nothing
  12230. Desc:    clears the serial interface buffer
  12231. Note:    this interrupt is identical to INT 53 on the Tandy 2000
  12232. SeeAlso: AH=00h"Tandy 2000",INT 53"Tandy 2000"
  12233. --------S-1404-------------------------------
  12234. INT 14 - FOSSIL - INITIALIZE DRIVER
  12235.     AH = 04h
  12236.     DX = port number
  12237.     optionally BX=4F50h
  12238.            ES:CX -> byte to be set upon ^C
  12239. Return: AX = 1954h (if successful)
  12240.     BL = maximum function number supported (excluding 7Eh and above)
  12241.     BH = revision of FOSSIL specification supported
  12242.     DTR is raised
  12243. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  12244.       following byte contains the maximum function number supported; this
  12245.       can serve as an installation check
  12246. SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
  12247. Index:    installation check;FOSSIL
  12248. --------S-1404-------------------------------
  12249. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  12250.     AH = 04h
  12251. Return: port initialized; if Hayes-compatible modem, a connection has been
  12252.       established
  12253. Note:    the port number is stored at offset BEh in the Task Control Block
  12254.       (see #0382 at INT 15/AH=13h"MultiDOS")
  12255. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  12256. --------S-1404-------------------------------
  12257. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  12258.     AH = 04h
  12259.     AL = initializing parameters (see #0236)
  12260.     BX = baud rate
  12261.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  12262. Return: AH = status
  12263.         00h successful
  12264.         FFh error
  12265. SeeAlso: AH=05h"Digiboard"
  12266.  
  12267. Bitfields for Digiboard initializing parameters:
  12268. Bit(s)    Description    (Table 0236)
  12269.  7-5    unused
  12270.  4-3    parity (00 none, 01 odd, 11 even)
  12271.  2    stop bits (0 = one, 1 = two)
  12272.  1-0    data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  12273. SeeAlso: #0233,#0234
  12274. --------S-1404-------------------------------
  12275. INT 14 - MBBIOS - INSTALLATION CHECK
  12276.     AH = 04h
  12277.     DX = port number
  12278. Return: AX = AA55h if installed on specified port
  12279. SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
  12280. --------N-1404--DXFFFF-----------------------
  12281. INT 14 - Connection Manager - OPEN COMMUNICATION
  12282.     AH = 04h
  12283.     DX = FFFFh
  12284.     ES:DI -> Connection Request protocol vector (see #0237)
  12285. Return: AH = return code
  12286.         00h successful
  12287.         AL = connection ID
  12288.         BH = connection type
  12289.             00h direct connection or no dialing
  12290.             01h Connection Server dialed phone
  12291.         01h no response from Connection Server
  12292.         03h invalid request
  12293. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  12294.       serial ports over an IPX or NetBIOS-based network
  12295. Desc:    initiate a connection to the Connection Server listed in the current
  12296.       Client parameter set
  12297. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  12298.       function, but redirects the port over the network; if DX is any other
  12299.       value, the call is chained
  12300.     all subvectors of the Connection Request vector are optional; if
  12301.       missing, default values are provided by the default connection
  12302.       parameter set
  12303. SeeAlso: AH=00h/DX=FFFFh,AH=05h/DX=FFFFh,AH=06h/DX=FFFFh,AH=07h/DX=FFFFh
  12304. SeeAlso: AH=0Ah/DX=FFFFh,AH=0Ch/DX=FFFFh
  12305.  
  12306. Format of Connection Manager protocol command vector:
  12307. Offset    Size    Description    (Table 0237)
  12308.  00h    WORD    (big-endian) total length of command (including this word)
  12309.  02h    WORD    (big-endian) command code
  12310.         EF01h Connection Request
  12311.         EF06h Modify Connection Parameters
  12312.  04h  N BYTEs    list of subvectors (see #0239)
  12313.         allowable subvector types are 01h-04h,17h,18h for command code
  12314.           EF01h; 03h,04h for command code EF06h (see #0238)
  12315.  
  12316. (Table 0238)
  12317. Values for Connection Manager subvector type code:
  12318.  01h    Connection ID
  12319.  02h    Destination ID
  12320.  03h    Asynchronous line parameters
  12321.  04h    Data transfer parameters
  12322.  09h    Line speed
  12323.  0Ah    Serial coding
  12324.  0Bh    Packet size
  12325.  0Ch    Timers
  12326.  0Dh    Special characters
  12327.  0Eh    Target ID
  12328.  0Fh    Telephone number
  12329.  10h    ASCII destination ID
  12330.  11h    Parity
  12331.  12h    Bits per character
  12332.  13h    Number of stop bits
  12333.  14h    Packet timer
  12334.  15h    Intercharacter timer
  12335.  17h    Flags
  12336.  18h    Parameter ranges
  12337.  19h    Flow control
  12338.  
  12339. Format of Connection Manager subvector:
  12340. Offset    Size    Description    (Table 0239)
  12341.  00h    BYTE    length of subvector
  12342.  01h    BYTE    type code (see #0238)
  12343.  02h N-2 BYTEs    data, which may include subvectors
  12344. SeeAlso: #0240,#0241,#0242,#0243,#0244,#0245,#0246,#0247,#0248,#0249,#0250
  12345. SeeAlso: #0251,#0252,#0254,#0255,#0256,#0257,#0258,#0259,#0237
  12346.  
  12347. Format of Connection ID subvector:
  12348. Offset    Size    Description    (Table 0240)
  12349.  00h    BYTE    03h (length)
  12350.  01h    BYTE    01h (subvector "Connection ID")
  12351.  02h    BYTE    connection ID
  12352. SeeAlso: #0239
  12353.  
  12354. Format of Destination ID subvector:
  12355. Offset    Size    Description    (Table 0241)
  12356.  00h    BYTE    length
  12357.  01h    BYTE    02h (subvector "Destination ID")
  12358.  02h  N BYTEs    subvector(s) of type 0Eh, 0Fh, or 10h
  12359. SeeAlso: #0239
  12360.  
  12361. Format of Asynchronous line parameters subvector:
  12362. Offset    Size    Description    (Table 0242)
  12363.  00h    BYTE    length
  12364.  01h    BYTE    03h (subvector "Asynchronous line parameters")
  12365.  02h  N BYTEs    subvector(s) of type 09h, 0Ah, or 19h
  12366. SeeAlso: #0239
  12367.  
  12368. Format of Data transfer parameters subvector:
  12369. Offset    Size    Description    (Table 0243)
  12370.  00h    BYTE    length
  12371.  01h    BYTE    04h (subvector "Data transfer parameters")
  12372.  02h  N BYTEs    subvector(s) of type 0Bh, 0Ch, or 0Dh
  12373. SeeAlso: #0239
  12374.  
  12375. Format of Line speed subvector:
  12376. Offset    Size    Description    (Table 0244)
  12377.  00h    BYTE    04h (length)
  12378.  01h    BYTE    09h (subvector "Line speed")
  12379.  02h    WORD    bit map, highest set bit selects speed
  12380.         bit 0: 2400
  12381.         bits 1-7: 1800, 1200, 600, 300, 115200, 150, 110 bps
  12382.         bits 8-15: 57600, 38400, 19200, 14400, 9600, 7200, 4800, 3600
  12383. SeeAlso: #0239
  12384.  
  12385. Format of Serial coding subvector:
  12386. Offset    Size    Description    (Table 0245)
  12387.  00h    BYTE    length
  12388.  01h    BYTE    0Ah (subvector "Serial coding")
  12389.  02h  N BYTEs    subvector(s) of type 11h, 12h, or 13h
  12390. SeeAlso: #0239
  12391.  
  12392. Format of Packet size subvector:
  12393. Offset    Size    Description    (Table 0246)
  12394.  00h    BYTE    04h (length)
  12395.  01h    BYTE    0Bh (subvector "Packet size")
  12396.  02h    WORD    (big-endian) packet size, 1 to 1024
  12397. SeeAlso: #0239
  12398.  
  12399. Format of Timers subvector:
  12400. Offset    Size    Description    (Table 0247)
  12401.  00h    BYTE    length
  12402.  01h    BYTE    0Ch (subvector "Timers")
  12403.  02h  8 BYTEs    subvector of type 14h or 15h
  12404. SeeAlso: #0239
  12405.  
  12406. Format of Special characters subvector:
  12407. Offset    Size    Description    (Table 0248)
  12408.  00h    BYTE    length
  12409.  01h    BYTE    0Dh (subvector "Special characters")
  12410.  02h  N BYTEs    list of ASCII characters to be used as EOM or EOB
  12411. SeeAlso: #0239
  12412.  
  12413. Format of Target ID:
  12414. Offset    Size    Description    (Table 0249)
  12415.  00h    BYTE    length
  12416.  01h    BYTE    0Eh (subvector "Target ID")
  12417.  02h  N BYTEs    target ID, 1-16 bytes
  12418. SeeAlso: #0239
  12419.  
  12420. Format of Telephone number subvector:
  12421. Offset    Size    Description    (Table 0250)
  12422.  00h    BYTE    length
  12423.  01h    BYTE    0Fh (subvector "Telephone number")
  12424.  02h  N BYTEs    telephone number
  12425. SeeAlso: #0239
  12426.  
  12427. Format of ASCII destination ID subvector:
  12428. Offset    Size    Description    (Table 0251)
  12429.  00h    BYTE    length
  12430.  01h    BYTE    10h (subvector "ASCII destination ID")
  12431.  02h  N BYTEs    destination ID
  12432. SeeAlso: #0239
  12433.  
  12434. Format of Parity subvector:
  12435. Offset    Size    Description    (Table 0252)
  12436.  00h    BYTE    03h (length)
  12437.  01h    BYTE    11h (subvector "Parity")
  12438.  02h    BYTE    parity type (see #0253)
  12439. SeeAlso: #0239
  12440.  
  12441. Bitfields for Connection Manager parity type:
  12442. Bit(s)    Description    (Table 0253)
  12443.  7    odd
  12444.  6    even
  12445.  5    mark
  12446.  4    space
  12447.  3    none
  12448. SeeAlso: #0252
  12449.  
  12450. Format of Bits per character subvector:
  12451. Offset    Size    Description    (Table 0254)
  12452.  00h    BYTE    03h (length)
  12453.  01h    BYTE    12h (subvector "Bits per character")
  12454.  02h    BYTE    bits per character
  12455.         bit 7: seven
  12456.         bit 6: eight
  12457. SeeAlso: #0239
  12458.  
  12459. Format of Number of stop bits subvector:
  12460. Offset    Size    Description    (Table 0255)
  12461.  00h    BYTE    03h (length)
  12462.  01h    BYTE    13h (subvector "Number of stop bits")
  12463.  02h    BYTE    stop bits
  12464.         bit 7: one
  12465.         bit 6: 1.5
  12466.         bit 5: two
  12467. SeeAlso: #0239
  12468.  
  12469. Format of Packet timer and Intercharacter timer subvectors:
  12470. Offset    Size    Description    (Table 0256)
  12471.  00h    BYTE    04h (length)
  12472.  01h    BYTE    subvector type
  12473.         14h Packet timer
  12474.         15h Intercharacter timer
  12475.  02h    WORD    (big-endian) unit of value representing 20ms
  12476. SeeAlso: #0239
  12477.  
  12478. Format of Flags subvector:
  12479. Offset    Size    Description    (Table 0257)
  12480.  00h    BYTE    03h (length)
  12481.  01h    BYTE    17h (subvector "Flags")
  12482.  02h    BYTE    flags
  12483.         bit 7: queueing requested
  12484. SeeAlso: #0239
  12485.  
  12486. Format of Parameter ranges subvector:
  12487. Offset    Size    Description    (Table 0258)
  12488.  00h    BYTE    length
  12489.  01h    BYTE    18h (subvector "Parameter ranges")
  12490.  02h  N BYTEs    subvector(s) of type 09h, 11h, 12h, or 13h
  12491. SeeAlso: #0239
  12492.  
  12493. Format of Flow control subvector:
  12494. Offset    Size    Description    (Table 0259)
  12495.  00h    BYTE    length (02h-04h)
  12496.  01h    BYTE    19h (subvector "Flow control")
  12497.  02h    BYTE    XOFF character
  12498.  03h    BYTE    XON character
  12499. Note:    if length is 02h, flow control is disabled; if length is 03h, any
  12500.       character will be accepted as XON after an XOFF
  12501. SeeAlso: #0239
  12502. --------S-140400-----------------------------
  12503. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK
  12504.     AX = 0400h
  12505. Return: AX = 0FF0h
  12506. SeeAlso: AX=0401h,AX=0408h
  12507. --------S-140401-----------------------------
  12508. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE
  12509.     AX = 0401h
  12510.     CX = mode
  12511. Return: nothing
  12512. SeeAlso: AX=0400h,AX=0402h
  12513. --------S-140402-----------------------------
  12514. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE
  12515.     AX = 0402h
  12516.     CL = parameters
  12517. Return: nothing
  12518. SeeAlso: AX=0400h,AX=0401h
  12519. --------S-140403-----------------------------
  12520. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT
  12521.     AX = 0403h
  12522.     CX = timeout
  12523. Return: nothing
  12524. SeeAlso: AX=0400h
  12525. --------S-140404-----------------------------
  12526. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER
  12527.     AX = 0404h
  12528. Return: nothing
  12529. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  12530. --------S-140405-----------------------------
  12531. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT
  12532.     AX = 0405h
  12533. Return: AX = number of characters in buffer
  12534. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  12535. --------S-140406-----------------------------
  12536. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER
  12537.     AX = 0406h
  12538. Return: nothing
  12539. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  12540. --------S-140407-----------------------------
  12541. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT
  12542.     AX = 0407h
  12543. Return: AX = number of characters in the buffer
  12544. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  12545. --------S-140408-----------------------------
  12546. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL
  12547.     AX = 0408h
  12548. Return: nothing
  12549. SeeAlso: AX=0400h
  12550. --------S-1405-------------------------------
  12551. INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  12552.     AH = 05h
  12553.     AL = function
  12554.         00h read modem control register
  12555.           Return: BL = modem control register (see #0260)
  12556.               AH = status
  12557.         01h write modem control register
  12558.           BL = modem control register (see #0260)
  12559.           Return: AX = status
  12560.     DX = port number
  12561. Note:    also supported by ArtiCom
  12562. SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
  12563.  
  12564. Bitfields for modem control register:
  12565. Bit(s)    Description    (Table 0260)
  12566.  0    data terminal ready
  12567.  1    request to send
  12568.  2    OUT1
  12569.  3    OUT2
  12570.  4    LOOP
  12571.  5-7    reserved
  12572. --------S-1405-------------------------------
  12573. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  12574.     AH = 05h
  12575.     DX = port number
  12576. Return: none
  12577.     DTR is not affected
  12578. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  12579. --------S-1405-------------------------------
  12580. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  12581.     AH = 05h
  12582.     AL = timeout in seconds (00h = never)
  12583. Return: AL = status
  12584.         00h successful
  12585.         AH = character read
  12586.         01h read error
  12587.         02h timed out
  12588.         other modem status (CTS, DSR) changed
  12589. Note:    the port number is stored at offset BEh in the Task Control Block
  12590. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  12591. SeeAlso: INT 15/AH=13h"MultiDOS"
  12592. --------S-1405-------------------------------
  12593. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  12594.     AH = 05h
  12595.     AL = protocol (see #0261)
  12596.     BH = new XOFF character (00h = current)
  12597.     BL = new XON character (00h = current)
  12598.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  12599. Return: AH = status
  12600.         00h successful
  12601.         FFh error
  12602. SeeAlso: AH=04h"Digiboard"
  12603.  
  12604. Bitfields for Digiboard protocol:
  12605. Bit(s)    Description    (Table 0261)
  12606.  7-4    unused
  12607.  3    RTS/CTS
  12608.  2    DSR
  12609.  1,0    XON/XOFF
  12610. --------S-1405-------------------------------
  12611. INT 14 - MBBIOS - DROP DTR AND RTS
  12612.     AH = 05h
  12613.     DX = port number
  12614. Return: none
  12615. SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
  12616. --------S-1405-------------------------------
  12617. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL
  12618.     AH = 05h
  12619.     AL = new port protocol (see #0262)
  12620.     BH = new XOFF character
  12621.     BL = new XON character
  12622.     DX = port number
  12623. Return: AH = FFh if invalid protocol
  12624. SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS"
  12625.  
  12626. Bitfields for PC-MOS/386 serial port protocol:
  12627. Bit(s)    Description    (Table 0262)
  12628.  7    set to enable/disable CD monitoring, clear to set protocol
  12629. ---bit 7 set---
  12630.  4    CD monitoring enabled
  12631.  5    automatic restart enabled
  12632. ---bit 7 clear---
  12633.  0    receive XON/XOFF
  12634.  1    transmit XON/XOFF
  12635.  2    DTR/DSR
  12636.  3    RTS/CTS
  12637. --------N-1405--DXFFFF-----------------------
  12638. INT 14 - Connection Manager - CLOSE COMMUNICATION
  12639.     AH = 05h
  12640.     DX = FFFFh
  12641.     AL = connection ID
  12642. Return: AH = return code
  12643.         00h successful
  12644.         01h no such connection
  12645.         02h invalid connection ID
  12646.         AL = correct connection ID
  12647. Desc:    terminate existing connection to allow another one to be established
  12648. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  12649.       function, but redirects the port over the network; if DX is any other
  12650.       value, the call is chained
  12651. SeeAlso: AH=04h/DX=FFFFh,AH=0Dh/DX=FFFFh
  12652. --------S-1406-------------------------------
  12653. INT 14 - FOSSIL - RAISE/LOWER DTR
  12654.     AH = 06h
  12655.     DX = port
  12656.     AL = DTR state to be set
  12657.         00h = lower
  12658.         01h = raise
  12659. Return: nothing
  12660. SeeAlso: AH=05h"MBBIOS",AH=1Ah
  12661. --------S-1406-------------------------------
  12662. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  12663.     AH = 06h
  12664.     AL = character
  12665. Return: AL = status
  12666.         00h successful
  12667. Notes:    the port number is stored at offset BEh in the Task Control Block
  12668.     if output queue is full, the calling task is blocked until the
  12669.       character can be stored
  12670. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  12671. SeeAlso: INT 15/AH=13h"MultiDOS"
  12672. --------S-1406-------------------------------
  12673. INT 14 - MBBIOS - RAISE DTR AND RTS
  12674.     AH = 06h
  12675.     DX = port number
  12676. Return: none
  12677. SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
  12678. --------S-1406-------------------------------
  12679. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION
  12680.     AH = 06h
  12681.     DX = port number
  12682. Return: AH bit 7 set
  12683.     AL = number of highest function supported by driver
  12684. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  12685.       operating system by The Software Link, Inc.
  12686. SeeAlso: AH=18h"PC-MOS"
  12687. --------N-1406-------------------------------
  12688. INT 14 - TelAPI - WRITE BLOCK
  12689.     AH = 06h
  12690.     CX = number of characters to write
  12691.     DX = port number
  12692.     ES:DI -> buffer containing data
  12693. Return: AX = number of characters actually sent (negative on error)
  12694.     CX = ???
  12695. SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI",AH=E3h"TelAPI"
  12696. --------N-1406--DXFFFF-----------------------
  12697. INT 14 - Connection Manager - SEND CHARACTER BLOCK
  12698.     AH = 06h
  12699.     DX = FFFFh
  12700.     AL = connection ID
  12701.     CX = number of characters to send
  12702.     ES:DI -> buffer containing data to be sent
  12703. Return: AH = return code (see #0229)
  12704. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  12705.       serial ports over an IPX or NetBIOS-based network
  12706. SeeAlso: AH=04h/DX=FFFFh,AH=07h/DX=FFFFh,AH=09h/DX=FFFFh
  12707. --------S-1407-------------------------------
  12708. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  12709.     AH = 07h
  12710. Return: AL = timer tick interrupt number
  12711.     AH = ticks per second on interrupt number in AL
  12712.     DX = approximate number of milliseconds per tick
  12713. SeeAlso: AH=16h
  12714. --------S-1407-------------------------------
  12715. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  12716.     AH = 07h
  12717. Return: CL = modem status (see #0231)
  12718.     CH = character at head of input queue (if any)
  12719.     DX = number of characters in input queue
  12720. Note:    the port number is stored at offset BEh in the Task Control Block
  12721. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  12722. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  12723. --------S-1407-------------------------------
  12724. INT 14 - MBBIOS - SEND BREAK
  12725.     AH = 07h
  12726.     DX = port number
  12727. Return: none
  12728. SeeAlso: AH=06h"MBBIOS",AH=FAh"EBIOS"
  12729. --------S-1407-------------------------------
  12730. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK
  12731.     AH = 07h
  12732.     BX = duration of break in clock ticks
  12733.     DX = port number
  12734. Return: nothing
  12735. --------N-1407-------------------------------
  12736. INT 14 - TelAPI - READ BLOCK
  12737.     AH = 07h
  12738.     CX = length of buffer in bytes
  12739.     DX = port number
  12740.     ES:DI -> buffer for data
  12741. Return: AX > 0000h number of characters actually read
  12742.     AX = 0000h host has closed connection
  12743.     AX < 0000h error code (see #0323)
  12744.     CX = ???
  12745. Note:    translates CRLF into local EOL if the connection is in ASCII mode,
  12746.       negotiates various Telnet options, and immediately executes several
  12747.       different Telnet action commands
  12748. SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI",AH=E2h"TelAPI"
  12749. --------N-1407--DXFFFF-----------------------
  12750. INT 14 - Connection Manager - RECEIVE CHARACTER BLOCK
  12751.     AH = 07h
  12752.     DX = FFFFh
  12753.     AL = connection ID
  12754.     BL = flag
  12755.         00h wait for data
  12756.         nonzero do not wait if no data avaiable
  12757.     CX = size of receive buffer
  12758.     ES:DI -> buffer for received characters
  12759. Return: AH = return code (00h-02h,04h,FFh) (see #0229)
  12760.     BH = line status (see #0232)
  12761.     CX = number of characters received
  12762. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  12763.       serial ports over an IPX or NetBIOS-based network
  12764. SeeAlso: AH=01h/DX=FFFFh,AH=04h/DX=FFFFh,AH=06h/DX=FFFFh
  12765. --------S-1408-------------------------------
  12766. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  12767.     AH = 08h
  12768.     DX = port number
  12769. Return: nothing
  12770. SeeAlso: AH=09h"FOSSIL"
  12771. --------S-1408-------------------------------
  12772. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  12773.     AH = 08h
  12774. Return: AL = line status (see #0230)
  12775.     AH destroyed
  12776. Notes:    the port number is stored at offset BEh in the Task Control Block
  12777.     on every line status change, the line status is ORed with the line
  12778.       status accumulator; this function returns the accumulator and clears
  12779.       it
  12780. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  12781. --------S-1408-------------------------------
  12782. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  12783.     AH = 08h
  12784.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  12785. Return: AH = RS232 status bits (see #0230 at AH=03h)
  12786.     ZF set if no characters queued
  12787.     ZF clear if character available
  12788.         AL = next character
  12789. SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard",AH=14h"Digiboard"
  12790. --------S-1408-------------------------------
  12791. INT 14 - MBBIOS - NON-DESTRUCTIVE READ
  12792.     AH = 08h
  12793.     DX = port number
  12794. Return: AL = character (if AH bit 0 set)
  12795.     AH = status (see #0230)
  12796. SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
  12797. --------S-1408-------------------------------
  12798. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK
  12799.     AH = 08h
  12800.     DX = port number
  12801. Return: CF set if carrier loss detected
  12802.     ZF set if input buffer empty
  12803.     ZF clear if characters available
  12804.         AL = next character dequeued
  12805. --------N-1408--DXFFFF-----------------------
  12806. INT 14 - Connection Manager - RETURN DEFAULT CONNECTION PARAMETERS
  12807.     AH = 08h
  12808.     DX = FFFFh
  12809.     CX = size of buffer for parameters or 0000h to get length
  12810.     ES:DI -> buffer for parameter vector (see #0237)
  12811. Return: AH = return code
  12812.         00h successful
  12813.         CX = number of bytes required (if CX=0000h on entry)
  12814.         CX = number of bytes omitted for lack of space (if CX nonzero)
  12815.         nonzero invalid request
  12816. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  12817.       serial ports over an IPX or NetBIOS-based network
  12818. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  12819. --------S-1409-------------------------------
  12820. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  12821.     AH = 09h
  12822.     DX = port number
  12823. Return: nothing
  12824. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  12825. --------S-1409-------------------------------
  12826. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  12827.     AH = 09h
  12828. Return: modem status byte cleared
  12829. Note:    the port number is stored at offset BEh in the Task Control Block
  12830. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  12831. --------S-1409-------------------------------
  12832. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  12833.     AH = 09h
  12834.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  12835. Return: AH = status
  12836.         00h successful
  12837.         FFh error
  12838. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  12839. --------S-1409-------------------------------
  12840. INT 14 - MBBIOS - GET/SET OPTIONS
  12841.     AH = 09h
  12842.     AL = option byte (see #0263)
  12843.     DX = port number???
  12844. Return: AL = old option byte
  12845. SeeAlso: AH=00h"MBBIOS",AH=04h"MBBIOS",AH=10h"FOSSIL"
  12846.  
  12847. Bitfields for MBBIOS option byte:
  12848. Bit(s)    Description    (Table 0263)
  12849.  0    transmit buffering enabled
  12850.  2    hardware handshaking enabled
  12851.  5    high-speed option enabled (see AH=00h"MBBIOS",#0228)
  12852.  other    reserved
  12853. --------S-1409-------------------------------
  12854. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS
  12855.     AH = 09h
  12856.     DX = port number
  12857. Return: nothing
  12858. SeeAlso: AH=13h"PC-MOS"
  12859. --------N-1409--DXFFFF-----------------------
  12860. INT 14 - Connection Manager - SEND BREAK
  12861.     AH = 09h
  12862.     DX = FFFFh
  12863.     AL = connection ID
  12864. Return: AH = return code (00h-02h) (see #0229 at AH=00h/DX=FFFFh)
  12865. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  12866.       serial ports over an IPX or NetBIOS-based network
  12867. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh
  12868. --------S-140A-------------------------------
  12869. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  12870.     AH = 0Ah
  12871.     DX = port number
  12872. Return: nothing
  12873. SeeAlso: AH=09h"FOSSIL",AH=85h
  12874. --------S-140A-------------------------------
  12875. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  12876.     AH = 0Ah
  12877.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  12878. Return: AX = number of characters available in buffer
  12879. Note:    this function is also supported by the PC-MOS/386 v5.01 $serial.sys
  12880. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  12881. --------S-140A-------------------------------
  12882. INT 14 - MBBIOS - WRITE BUFFER
  12883.     AH = 0Ah
  12884.     CX = count
  12885.     ES:DI -> buffer (see #0264)
  12886. Return: AX = status (see #0230,#0231)
  12887.     CX = unsent character count
  12888.     DI updated
  12889. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI; instead, ES
  12890.       contains the segment of a buffer containing the packet to be sent,
  12891.       which by default will be freed once the packet has been sent.     Use
  12892.       AH=0Ch"MBBIOS" to allocate the buffer.
  12893. SeeAlso: AH=01h,AH=0Bh"MBBIOS",AH=0Ch"MBBIOS",AH=19h"FOSSIL"
  12894.  
  12895. Format of MBBIOS PACCOM buffer:
  12896. Offset    Size    Description    (Table 0264)
  12897.  00h 504 BYTEs    data area
  12898. 1F8h    WORD    length of data in data area
  12899. 1FAh    BYTE    flags/status
  12900.         bit 7: don't discard buffer after transmitting data
  12901.         bit 6: buffer has been transmitted
  12902. 1FBh    BYTE    reserved (0) for additional flags/status
  12903. 1FCh    WORD    user data
  12904. 1FEh    WORD    MBBIOS-internal pointer to next buffer
  12905. --------N-140A--DXFFFF-----------------------
  12906. INT 14 - Connection Manager - MODIFY ACTIVE CONNECTION PARAMETERS
  12907.     AH = 0Ah
  12908.     DX = FFFFh
  12909.     ES:DI -> vector string containing new parameters (see #0237)
  12910. Return: AH = return code (00h-03h,06h) (see #0229)
  12911. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  12912.       serial ports over an IPX or NetBIOS-based network
  12913. Note:    any subvectors valid for the Change Parameters command replace the
  12914.       existing values in the current set
  12915. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  12916. --------S-140B-------------------------------
  12917. INT 14 - FOSSIL - TRANSMIT NO WAIT
  12918.     AH = 0Bh
  12919.     AL = character
  12920.     DX = port number
  12921. Return: AX = result
  12922.         0000h character not accepted
  12923.         0001h character accepted
  12924. SeeAlso: AH=01h
  12925. --------S-140B-------------------------------
  12926. INT 14 - MBBIOS - READ BUFFER
  12927.     AH = 0Bh
  12928.     CX = size of buffer
  12929.     ES:DI -> buffer
  12930. Return: AH = composite line status (see #0230) formed by ORing all statuses
  12931.           on receive interrupts; bit 0 set if additional characters
  12932.           available
  12933.     AL = composite modem status (see #0231) formed by ORing all statuses
  12934.     CX = number of characters actually read
  12935.     DI updated
  12936. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI on call,
  12937.       instead returning ES set to the segment of the buffer containing a
  12938.       received packet, or 0000h if no packets available; the buffer may
  12939.       be freed with AH=0Ch"MBBIOS"
  12940. SeeAlso: AH=02h,AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=0Ch"MBBIOS",AH=18h"FOSSIL"
  12941. --------N-140B--DXFFFF-----------------------
  12942. INT 14 - Connection Manager - PREPARE FOR INBOUND CONNECTION
  12943.     AH = 0Bh
  12944.     DX = FFFFh
  12945.     AL = service name
  12946.         00h use parameter file or default
  12947.         01h use specified name
  12948.         ES:DI -> 16-byte blank-padded name
  12949.     BH = connection notification
  12950.         00h program awaiting connection, don't notify user
  12951.         01h notify user on connecting
  12952.     BL = connection type
  12953.         00h connection will use Connection Manager API
  12954. Return: AH = return code (00h-02h) (see #0229 at AH=00h/DX=FFFFh)
  12955.     AL = connection ID if AH=00h
  12956. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  12957.       serial ports over an IPX or NetBIOS-based network
  12958. SeeAlso: AH=04h/DX=FFFFh,AH=0Ch/DX=FFFFh,AH=10h/DX=FFFFh
  12959. --------S-140C-------------------------------
  12960. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  12961.     AH = 0Ch
  12962.     DX = port number
  12963. Return: AX = FFFFh character not available
  12964.     AX = 00xxh character xx available
  12965. SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
  12966. --------S-140C-------------------------------
  12967. INT 14 - MBBIOS PACCOM support - BUFFER MANAGEMENT
  12968.     AH = 0Ch
  12969.     ES = segment of buffer to free, or 0000h to allocate new buffer
  12970. Return: ES = segment of allocated buffer (if ES=0000h on entry)
  12971. Note:    the PACCOM version of MBBIOS uses only ES as buffer address for
  12972.       AH=0Ah and AH=0Bh
  12973. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  12974. --------N-140C--DXFFFF-----------------------
  12975. INT 14 - Connection Manager - TEST FOR INBOUND CONNECTION REQUEST
  12976.     AH = 0Ch
  12977.     DX = FFFFh
  12978.     AL = connection ID from AH=0Bh/DX=FFFFh
  12979. Return: AH = return code (00h-03h) (see also #0229 at AH=00h/DX=FFFFh)
  12980.         03h not prepared for inbound connection
  12981.     AL = connection ID (if AH=00h) or correct connection ID (if AH=02h)
  12982. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  12983.       serial ports over an IPX or NetBIOS-based network
  12984. SeeAlso: AH=03h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  12985. --------S-140D-------------------------------
  12986. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  12987.     AH = 0Dh
  12988. Return: AX = result
  12989.         FFFFh character not available
  12990.         xxyyh standard IBM-style scan code
  12991. SeeAlso: AH=0Eh
  12992. --------S-140D-------------------------------
  12993. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  12994.     AH = 0Dh
  12995.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  12996. Return: ES:BX -> CH_KEY_RDY flag (see #0265)
  12997. SeeAlso: AH=0Ah"Digiboard"
  12998.  
  12999. (Table 0265)
  13000. Values for Digiboard CH_KEY_RDY flag:
  13001.  00h    receive buffer empty
  13002.  FFh    characters available
  13003. --------S-140D-------------------------------
  13004. INT 14 - MBBIOS PACCOM support - SET TXD
  13005.     AH = 0Dh
  13006.     AL = new setting (FFh = 1.0)
  13007. Return: nothing
  13008. Desc:    specify the time from RTS to start or packet
  13009. SeeAlso: AX=0D00h,AH=0Eh"MBBIOS",AH=0Fh"MBBIOS"
  13010. --------N-140D--DXFFFF-----------------------
  13011. INT 14 - Connection Manager - TERMINATE CONNECTION CLIENT ACTIVITY
  13012.     AH = 0Dh
  13013.     DX = FFFFh
  13014. Return: AH = return code
  13015.         00h successful
  13016.         nonzero operation not terminated
  13017. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  13018.       serial ports over an IPX or NetBIOS-based network
  13019. Desc:    end all Connection Client TSR activity to allow it to be removed from
  13020.       memory
  13021. SeeAlso: AH=05h/DX=FFFFh,AH=6Fh/BX=FFFFh
  13022. --------S-140D00-----------------------------
  13023. INT 14 - MBBIOS - GET AVAILABLE BYTES
  13024.     AX = 0D00h
  13025. Return: AX = bytes in transmit buffer
  13026.     CX = bytes in receive buffer
  13027. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  13028. --------S-140D01-----------------------------
  13029. INT 14 - MBBIOS - LOWER ALL MODEM CONTROL SIGNALS
  13030.     AX = 0D01h
  13031. Return: nothing
  13032. Note:    this function lowers DTR, RTS, etc.
  13033. SeeAlso: AX=0D02h
  13034. --------S-140D02-----------------------------
  13035. INT 14 - MBBIOS - RAISE ALL MODEM CONTROL SIGNALS
  13036.     AX = 0D02h
  13037. Return: nothing
  13038. Note:    this function raises DTR, RTS, etc.
  13039. SeeAlso: AX=0D01h
  13040. --------S-140D03-----------------------------
  13041. INT 14 - MBBIOS - SET HANDSHAKE BYTE
  13042.     AX = 0D03h
  13043.     CL = new handshake byte
  13044. Return: CL = previous handshake byte
  13045. Note:    this function lowers DTR, RTS, etc.
  13046. --------S-140E-------------------------------
  13047. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  13048.     AH = 0Eh
  13049. Return: AX = xxyyh standard IBM-style scan code
  13050. SeeAlso: AH=0Dh"FOSSIL"
  13051. --------S-140E-------------------------------
  13052. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  13053.     AH = 0Eh
  13054.     CX = number of characters to write
  13055.     ES:BX -> string
  13056.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13057. Return: AX = number of characters actually written
  13058.     ZF clear if successful
  13059.     ZF set on error
  13060. SeeAlso: AH=0Fh"Digiboard"
  13061. --------S-140E-------------------------------
  13062. INT 14 - MBBIOS PACCOM support - SET PERSISTENCE
  13063.     AH = 0Eh
  13064.     AL = new setting (FFh = 1.0)
  13065. Return: nothing
  13066. Desc:    specify the time from end of DCD to RTS
  13067. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  13068. --------N-140E--DXFFFF-----------------------
  13069. INT 14 - Connection Manager - SET HARDWARE FLOW STATE
  13070.     AH = 0Eh
  13071.     DX = FFFFh
  13072.     AL = connection ID from AH=04h/DX=FFFFh
  13073.     BL = RTS state (00h off, 01h on)
  13074. Return: AH = return code (00h-03h) (see also #0229 at AH=00h/DX=FFFFh)
  13075.         03h invalid request (BL not 00h or 01h)
  13076. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  13077.       serial ports over an IPX or NetBIOS-based network
  13078. SeeAlso: AH=03h/DX=FFFFh,AH=0Ah/DX=FFFFh
  13079. --------S-140F-------------------------------
  13080. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  13081.     AH = 0Fh
  13082.     AL = bit mask describing requested flow control (see #0266)
  13083.     DX = port number
  13084. Return: nothing
  13085. SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
  13086.  
  13087. Bitfields for FOSSIL requested flow control:
  13088. Bit(s)    Description    (Table 0266)
  13089.  0    XON/XOFF on transmit (watch for XOFF while sending)
  13090.  1    CTS/RTS (CTS on transmit/RTS on receive)
  13091.  2    reserved
  13092.  3    XON/XOFF on receive (send XOFF when buffer near full)
  13093.  4-7    all 1
  13094. --------S-140F-------------------------------
  13095. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  13096.     AH = 0Fh
  13097.     CX = number of characters to read
  13098.     ES:BX -> buffer
  13099.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13100. Return: AX = number of characters read
  13101.     ZF clear if successful
  13102.     ZF set on error (line status or wrong number of characters)
  13103. SeeAlso: AH=0Eh"Digiboard"
  13104. --------S-140F-------------------------------
  13105. INT 14 - MBBIOS PACCOM support - SET SLOT TIME
  13106.     AH = 0Fh
  13107.     AL = new setting in clock ticks
  13108. Return: nothing
  13109. Desc:    specify the time from end of DCD to RTS
  13110. SeeAlso: AH=0Dh"MBBIOS",AH=0Eh"MBBIOS",AH=10h"MBBIOS"
  13111. --------N-140F--DXFFFF-----------------------
  13112. INT 14 - Connection Manager - RETURN ACTIVE CONNECTION PARAMETERS
  13113.     AH = 0Fh
  13114.     DX = FFFFh
  13115.     AL = connection ID
  13116.     CX = size of buffer or 0000h to get length of returned vector
  13117.     ES:DI -> buffer for connection parameter vector (see #0237)
  13118. Return: AH = return code (00h-02h,06h) (see #0229 at AH=00h/DX=FFFFh)
  13119.     CX = number of bytes which could not be returned because the given
  13120.           buffer was too small
  13121. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  13122.       serial ports over an IPX or NetBIOS-based network
  13123. SeeAlso: AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  13124. --------S-1410-------------------------------
  13125. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  13126.     AH = 10h
  13127.     AL = bit mask
  13128.         bit 0: enable/disable ^C/^K checking
  13129.         bit 1: enable/disable the transmitter
  13130.     DX = port number
  13131. Return: nothing
  13132. SeeAlso: AH=0Fh"FOSSIL"
  13133. --------S-1410-------------------------------
  13134. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  13135.     AH = 10h
  13136.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13137. Return: AH = status
  13138.         00h successful
  13139.         FFh error
  13140. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  13141. --------S-1410-------------------------------
  13142. INT 14 - MBBIOS PACCOM support - SET CRC WAIT
  13143.     AH = 10h
  13144.     AL = new setting in clock ticks (should be at least 5 character times)
  13145. Return: nothing
  13146. Desc:    specify the time from start of last character to dropping RTS
  13147. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  13148. --------N-1410--DXFFFF-----------------------
  13149. INT 14 - Connection Manager - QUERY SERVICE NAMES
  13150.     AH = 10h
  13151.     DX = FFFFh
  13152.     CL = subfunction
  13153.         00h search first
  13154.         01h search next
  13155.     ES:DI -> pattern buffer (see #0267)
  13156. Return: AH = return code (00h,01h,03h,06h) (see also #0229 at AH=00h/DX=FFFFh)
  13157.         01h no (more) matching names
  13158.         03h invalid request
  13159.     ES:DI buffer filled with reply buffer (see #0267) containing matched
  13160.           name if AH=00h
  13161. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  13162.       serial ports over an IPX or NetBIOS-based network
  13163. Desc:    obtain the names of groups and lines available for connection requests,
  13164.       and the names of active Connection Servers
  13165. SeeAlso: AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  13166.  
  13167. Format of Connection Manager pattern/reply buffer:
  13168. Offset    Size    Description    (Table 0267)
  13169.  00h    WORD    length of pattern (30h or 32h)
  13170.  02h 16 BYTEs    server pattern or name
  13171.  12h 16 BYTEs    group pattern or name
  13172.  22h 16 BYTEs    line pattern or name
  13173.  23h    BYTE    (optional) ???
  13174.  24h    BYTE    (optional, returned) current line status
  13175.         00h available
  13176.         01h out of service
  13177.         02h currently allocated to a connection
  13178. Note:    pattern may include '?' wildcard to match any character
  13179. --------S-1411-------------------------------
  13180. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  13181.     AH = 11h
  13182.     DH = row
  13183.     DL = column
  13184. Return: nothing
  13185. Note:    this is the same as INT 10/AH=02h
  13186. SeeAlso: AH=12h"FOSSIL"
  13187. --------S-1411-------------------------------
  13188. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  13189.     AH = 11h
  13190.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13191. Return: AH = status
  13192.         00h successful
  13193.         FFh error
  13194. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  13195. --------S-1411-------------------------------
  13196. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT
  13197.     AH = 11h
  13198.     DX = port number
  13199. Return: AL = status
  13200.         00h successful
  13201.         01h IRQ for port is shared
  13202.         02h IRQ was reserved
  13203. SeeAlso: AH=04h"SERIAL",AH=05h"SERIAL",AH=12h"PC-MOS"
  13204. --------S-1412-------------------------------
  13205. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  13206.     AH = 12h
  13207. Return: DH = row
  13208.     DL = column
  13209. Note:    this is the same as INT 10/AH=03h
  13210. SeeAlso: AH=11h"FOSSIL"
  13211. --------S-1412-------------------------------
  13212. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  13213.     AH = 12h
  13214.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13215. Return: AX = number of bytes free
  13216. SeeAlso: AH=0Ah"Digiboard",AH=14h"Digiboard"
  13217. --------S-1412-------------------------------
  13218. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS
  13219.     AH = 12h
  13220.     DX = port number
  13221. Return: AH = status
  13222.         FFh port number invalid
  13223.     AL = line parameters (see #0230)
  13224.     AH = flow control configuration (see #0262 at AH=05h"PC-MOS")
  13225.     CX:BX = bps rate
  13226.     DL = XOFF character or 00h for none
  13227.     DH = XON character or 00h for none
  13228. --------S-1413-------------------------------
  13229. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  13230.     AH = 13h
  13231.     AL = character
  13232. Return: nothing
  13233. Note:    should not be called if it is unsafe to call DOS
  13234. SeeAlso: AH=15h
  13235. --------S-1413-------------------------------
  13236. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL
  13237.     AH = 13h
  13238.     DX = port number
  13239. Return: AH = status
  13240.         FFh port number invalid
  13241.         else
  13242.         ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data)
  13243. SeeAlso: AH=17h"PC-MOS"
  13244. --------S-1414-------------------------------
  13245. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  13246.     AH = 14h
  13247.     AL = 01h enable watchdog
  13248.          00h disable watchdog
  13249.     DX = port number
  13250. Return: nothing
  13251. SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR"
  13252. --------S-1414-------------------------------
  13253. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING
  13254.     AH = 14h
  13255.     CX = number of characters in string
  13256.     DX = port number
  13257.     ES:BX -> string to be sent
  13258.     SI = timeout in timer ticks or 0000h for default
  13259. Return: AX = number of bytes actually sent
  13260.     ZF clear if successful
  13261.     ZF set on timeout
  13262. SeeAlso: AH=01h,AH=15h"PC-MOS"
  13263. --------S-1414-------------------------------
  13264. INT 14 - Digiboard - GET NUMBER OF BOARDS INSTALLED
  13265.     AH = 14h
  13266. Return: AX = number of boards installed
  13267. SeeAlso: AH=08h"Digiboard",AH=15h"Digiboard"
  13268. --------S-1415-------------------------------
  13269. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  13270.     AH = 15h
  13271.     AL = character
  13272. Return: nothing
  13273. SeeAlso: AH=13h"FOSSIL"
  13274. --------S-1415-------------------------------
  13275. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING
  13276.     AH = 15h
  13277.     CX = size of buffer
  13278.     DX = port number
  13279.     ES:BX -> buffer for received characters
  13280.     SI = timeout in clock ticks or 0000h for default
  13281. Return: AX = number of characters actually read
  13282.     ZF set on timeout (no data available)
  13283. SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS"
  13284. --------S-1415-------------------------------
  13285. INT 14 - Digiboard - ENABLE/DISABLE MEMORY
  13286.     AH = 15h
  13287.     AL = new state (00h disabled, 01h enabled)
  13288. Return: AH = status
  13289.         00h successful
  13290.         80h error
  13291.         FFh error
  13292. SeeAlso: AH=14h"Digiboard",AH=16h"Digiboard"
  13293. --------S-1416-------------------------------
  13294. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  13295.     AH = 16h
  13296.     AL = function
  13297.         00h = delete
  13298.         01h = add
  13299.     ES:DX -> routine to call
  13300. Return: AX = status
  13301.         0000h successful
  13302.         0001h unsuccessful
  13303. SeeAlso: AH=07h"FOSSIL"
  13304. --------S-1416-------------------------------
  13305. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER
  13306.     AH = 16h
  13307.     ES:BX -> calling driver's INT 14 entry point
  13308. Return: nothing
  13309. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  13310.       operating system by The Software Link, Inc.
  13311. --------S-1416-------------------------------
  13312. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  13313.     AH = 16h
  13314.     AL = CCB command number (see #0268) (see also following entries)
  13315.     BL = byte 2
  13316.     BH = byte 3
  13317.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  13318.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13319. Return: AH = status
  13320.         00h successful
  13321.         80h error
  13322.         FFh error
  13323. SeeAlso: AX=1646h,AH=18h"Digiboard"
  13324.  
  13325. (Table 0268)
  13326. Values for Digiboard CCB command number:
  13327.  40h    Set Receive Mid Water Mark
  13328.  41h    Set Receive High Water Mark
  13329.  42h    Flush Receive Buffer
  13330.  43h    Flush Transmit Buffer
  13331.  44h    Transmit Pause
  13332.  45h    Transmit Resume
  13333.  46h    Set Interrupt to Host Mask
  13334.  47h    Set Baud, Data, Stop and Parity
  13335.  48h    Send Break
  13336.  49h    Set Modem Lines
  13337.  4Ah    Set Break Count
  13338.  4Bh    Set Handshake
  13339.  4Ch    Set Xon/Xoff Characters
  13340.  4Dh    Set Transmit Mid Water Mark
  13341.  4Eh    IRQ Polling Timer to Host
  13342.  4Fh    Buffer Set All
  13343.  50h    Port On
  13344.  51h    Port Off
  13345.  52h    Receive Pause
  13346.  53h    Special Character Interrupt
  13347.  54h    RS-422 Enable
  13348. --------S-141646-----------------------------
  13349. INT 14 - Digiboard - CCB COMMAND - SET INTERRUPT TO HOST MASK
  13350.     AX = 1646h
  13351.     BL = bits to set
  13352.     BH = bits to clear
  13353.     CL = byte 1
  13354.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13355. Return: AH = status
  13356.         00h successful
  13357.         80h error
  13358.         FFh error
  13359. SeeAlso: AH=16h"Digiboard",AX=1647h
  13360. --------S-141647-----------------------------
  13361. INT 14 - Digiboard - CCB COMMAND - SET BAUD/DATABITS/STOPBITS/PARITY
  13362.     AX = 1647h
  13363.     BL = baud
  13364.     BH = datatype
  13365.     CL = byte 1
  13366.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13367. Return: AH = status
  13368.         00h successful
  13369.         80h error
  13370.         FFh error
  13371. SeeAlso: AH=16h"Digiboard",AX=1646h,AX=1649h
  13372. --------S-141649-----------------------------
  13373. INT 14 - Digiboard - CCB COMMAND - SET MODEM LINES
  13374.     AX = 1649h
  13375.     BL = bits to set
  13376.     BH = bits to clear
  13377.     CL = byte 1
  13378.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13379. Return: AH = status
  13380.         00h successful
  13381.         80h error
  13382.         FFh error
  13383. SeeAlso: AH=16h"Digiboard",AX=1647h
  13384. --------S-14164A-----------------------------
  13385. INT 14 - Digiboard - CCB COMMAND - SET BREAK COUNT
  13386.     AX = 164Ah
  13387.     BL = break count
  13388.     CL = byte 1
  13389.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13390. Return: AH = status
  13391.         00h successful
  13392.         80h error
  13393.         FFh error
  13394. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Bh
  13395. --------S-14164B-----------------------------
  13396. INT 14 - Digiboard - CCB COMMAND - SET HANDSHAKE
  13397.     AX = 164Bh
  13398.     BL = bits to set
  13399.     BH = bits to clear
  13400.     CL = byte 1
  13401.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13402. Return: AH = status
  13403.         00h successful
  13404.         80h error
  13405.         FFh error
  13406. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Ch
  13407. --------S-14164C-----------------------------
  13408. INT 14 - Digiboard - CCB COMMAND - SET XON/XOFF CHARACTERS
  13409.     AX = 164Ch
  13410.     BL = XON character
  13411.     BH = XOFF character
  13412.     CL = byte 1
  13413.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13414. Return: AH = status
  13415.         00h successful
  13416.         80h error
  13417.         FFh error
  13418. SeeAlso: AH=16h"Digiboard",AX=164Bh,AX=164Dh
  13419. --------S-14164D-----------------------------
  13420. INT 14 - Digiboard - CCB COMMAND - SET TRANSMIT MID-WATER MARK
  13421.     AX = 164Dh
  13422.     BX = new mid-water mark
  13423.     CL = byte 1
  13424.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13425. Return: AH = status
  13426.         00h successful
  13427.         80h error
  13428.         FFh error
  13429. SeeAlso: AH=16h"Digiboard",AX=164Ch,AX=164Eh,AX=164Fh
  13430. --------S-14164E-----------------------------
  13431. INT 14 - Digiboard - CCB COMMAND - IRQ POLLING TIMER TO HOST
  13432.     AX = 164Eh
  13433.     BL = ticks
  13434.     BH = ???
  13435.     CL = mode
  13436.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13437. Return: AH = status
  13438.         00h successful
  13439.         80h error
  13440.         FFh error
  13441. SeeAlso: AH=16h"Digiboard",AX=164Dh
  13442. --------S-14164F-----------------------------
  13443. INT 14 - Digiboard - CCB COMMAND - BUFFER SET ALL
  13444.     AX = 164Fh
  13445.     BL = size
  13446.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13447. Return: AH = status
  13448.         00h successful
  13449.         80h error
  13450.         FFh error
  13451. SeeAlso: AH=16h"Digiboard",AX=164Dh
  13452. --------S-141653-----------------------------
  13453. INT 14 - Digiboard - CCB COMMAND - SPECIAL CHARACTER INTERRUPT
  13454.     AX = 1653h
  13455.     BL = enable/disable
  13456.     BH = special character
  13457.     CL = byte 1
  13458.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13459. Return: AH = status
  13460.         00h successful
  13461.         80h error
  13462.         FFh error
  13463. SeeAlso: AH=16h"Digiboard",AX=1646h
  13464. --------S-1417-------------------------------
  13465. INT 14 - FOSSIL - REBOOT SYSTEM
  13466.     AH = 17h
  13467.     AL = method
  13468.         00h = cold boot
  13469.         01h = warm boot
  13470. SeeAlso: INT 16/AX=E0FFh,INT 19,INT 60/DI=0606h
  13471. --------S-1417-------------------------------
  13472. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER
  13473.     AH = 17h
  13474.     AL = new value for UART's modem control register
  13475.     DX = port number
  13476. Return: nothing
  13477. --------S-1418-------------------------------
  13478. INT 14 - FOSSIL - READ BLOCK
  13479.     AH = 18h
  13480.     CX = maximum number of characters to transfer
  13481.     DX = port number
  13482.     ES:DI -> user buffer
  13483. Return: AX = number of characters transferred
  13484. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  13485. --------S-1418-------------------------------
  13486. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  13487.     AH = 18h
  13488.     ES:BX -> 16-byte command string
  13489.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13490. Return: AH = status
  13491.         00h successful
  13492.         80h timeout
  13493.     AL = mailbox status
  13494.         00h no errors
  13495.         8Xh BIOS error
  13496.     ES:BX buffer filled in with mailbox string
  13497.     ZF clear if no errors
  13498.     ZF set if either status byte contains an error code
  13499. SeeAlso: AH=16h"Digiboard"
  13500. --------S-1418-------------------------------
  13501. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION
  13502.     AH = 18h
  13503.     DX = port number
  13504. Return: DS:BX -> 40-byte buffer containing a string identifying the serial
  13505.         driver
  13506. SeeAlso: AH=06h"PC-MOS"
  13507. --------S-1419-------------------------------
  13508. INT 14 - FOSSIL - WRITE BLOCK
  13509.     AH = 19h
  13510.     CX = maximum number of characters to transfer
  13511.     DX = port number
  13512.     ES:DI -> user buffer
  13513. Return: AX = number of characters transferred
  13514. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  13515. --------S-1419-------------------------------
  13516. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  13517.     AH = 19h
  13518.     BL = flag
  13519.         00h disable special character interrupt
  13520.         FFh enable interrupt
  13521.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13522. Return: AH = status
  13523.         00h successful
  13524.         FFh failed
  13525. SeeAlso: AH=1Ah"Digiboard"
  13526. --------S-1419-------------------------------
  13527. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH
  13528.     AH = 19h
  13529.     AL = what to flush
  13530.         bit 0: input buffer
  13531.         bit 1: output buffer
  13532.     DX = port number
  13533. Return: nothing
  13534. SeeAlso: AH=09h"PC-MOS"
  13535. --------S-141A-------------------------------
  13536. INT 14 - FOSSIL - BREAK BEGIN OR END
  13537.     AH = 1Ah
  13538.     AL = 00h stop sending 'break'
  13539.          01h start sending 'break'
  13540.     DX = port number
  13541. Return: nothing
  13542. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  13543. --------S-141A-------------------------------
  13544. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  13545.     AH = 1Ah
  13546.     BX = subfunction
  13547.         00h return pointer to special character flag byte
  13548.         01h return pointer to special character counter word
  13549.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  13550. Return: ES:BX -> special character flag or counter
  13551. Notes:    flag is FFh if one or more special characters are in the receive
  13552.       buffer; it is 00h and the counter is invalid if no special characters
  13553.       are in the receive buffer
  13554.     counter (if valid) contains the number of characters in the receive
  13555.       buffer up to and including the last-received special character
  13556. --------S-141B-------------------------------
  13557. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  13558.     AH = 1Bh
  13559.     DX = port number
  13560.     CX = size of user buffer
  13561.     ES:DI -> user buffer for driver info (see #0269)
  13562. Return: AX = number of characters transferred
  13563.     CX = 3058h ("0X") (X00 FOSSIL only)
  13564.     DX = 2030h (" 0") (X00 FOSSIL only)
  13565.  
  13566. Format of FOSSIL driver info:
  13567. Offset    Size    Description    (Table 0269)
  13568.  00h    WORD    size of structure in bytes
  13569.  02h    BYTE    FOSSIL spec driver conforms to
  13570.  03h    BYTE    revision level of this specific driver
  13571.  04h    DWORD    pointer to ASCIZ identification string
  13572.  08h    WORD    size of the input buffer
  13573.  0Ah    WORD    number of bytes left in buffer
  13574.  0Ch    WORD    size of the output buffer
  13575.  0Eh    WORD    number of bytes left in buffer
  13576.  10h    BYTE    width of screen
  13577.  11h    BYTE    length of screen
  13578.  12h    BYTE    actual baud rate, computer to modem
  13579. --------S-141C-------------------------------
  13580. INT 14 - X00 FOSSIL - ACTIVATE PORT
  13581.     AH = 1Ch
  13582.     DX = port number
  13583. Return: AX = 1954h if successful
  13584.     BL = maximum function number supported (not including 7Eh and above)
  13585.     BH = revision of FOSSIL specification supported
  13586. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  13587.       with the PS/2 BIOS in a future release
  13588. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  13589. --------S-141D-------------------------------
  13590. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  13591.     AH = 1Dh
  13592.     DX = port number
  13593. Return: none
  13594. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  13595.       with the PS/2 BIOS in a future release
  13596.     ignored if the port was never activated with AH=04h or AH=1Ch
  13597. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  13598. --------S-141E-------------------------------
  13599. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  13600.     AH = 1Eh
  13601.     AL = break status
  13602.         00h if break
  13603.         01h if no break
  13604.     BH = parity (see #0270)
  13605.     BL = number of stop bits
  13606.         00h one stop bit
  13607.         01h two stop bits (1.5 if 5 bit word length)
  13608.     CH = word length (see #0271)
  13609.     CL = bps rate (see #0272)
  13610.     DX = port number
  13611. Return: AX = port status code (see #0230,#0231)
  13612. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  13613.     if the port was locked at X00 load time, the appropriate parameters are
  13614.       ignored
  13615. SeeAlso: AH=00h,AH=04h"SERIAL"
  13616.  
  13617. (Table 0270)
  13618. Values for X00 FOSSIL parity:
  13619.  00h    no parity
  13620.  01h    odd parity
  13621.  02h    even parity
  13622.  03h    stick parity odd
  13623.  04h    stick parity even
  13624. SeeAlso: #0233,#0271,#0272
  13625.  
  13626. (Table 0271)
  13627. Values for X00 FOSSIL word length:
  13628.  00h    5 bits
  13629.  01h    6 bits
  13630.  02h    7 bits
  13631.  03h    8 bits
  13632. SeeAlso: #0234,#0270,#0272
  13633.  
  13634. (Table 0272)
  13635. Values for X00 FOSSIL bps rate:
  13636.  00h    110
  13637.  01h    150
  13638.  02h    300
  13639.  03h    600
  13640.  04h    1200
  13641.  05h    2400
  13642.  06h    4800
  13643.  07h    9600
  13644.  08h    19200
  13645. SeeAlso: #0235,#0270,#0271
  13646. --------S-141E------------------------------------
  13647. INT 14 - HUNTER 16 - READ COMMS PARAMETERS
  13648.     AH = 1Eh
  13649.     CX = channel number (00h COM1, 01h COM2, ...)
  13650.     DS:BX -> buffer for communications parameters (see #0273)
  13651. Return: DS:BX buffer filled
  13652. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  13653.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  13654. SeeAlso: AH=20h"HUNTER"
  13655.  
  13656. Format of HUNTER 16 communications parameters:
  13657. Offset    Size    Description    (Table 0273)
  13658.  00h    BYTE    communications type (00h IBM, nonzero Husky)
  13659.  01h    BYTE    port number (00h COM1, 01h COM2)
  13660.  02h    BYTE    baud rate (00h 110 bps, 01h 150, 02h 300, 03h 600, 04h 1200,
  13661.           05h 2400, 06h 4800, 07h 9600, 08h 19200, 09h 38400)
  13662.  03h    BYTE    data bits (01h seven, 02h eight)
  13663.  04h    BYTE    parity (00h none, 01h odd, 02h even)
  13664.  05h    BYTE    stop bits (00h one, 01h two)
  13665.  06h    BYTE    handshake (see #0274)
  13666.  07h    BYTE    handshake protocol (00h none, 01h Xon/Xoff, 02h HWK3780)
  13667.  08h    BYTE    Nulls after CR (0-20)
  13668.  09h    BYTE    LF (00h off, 01h on)
  13669.  0Ah    BYTE    Serig. 0..7Fh: Ignore this character
  13670.                80h: Serig off
  13671.  0Bh    BYTE    echo (00h off, 01h on)
  13672.  0Ch    BYTE    transmit timeout in seconds (1-60) or 00h to disable
  13673.  0Dh    BYTE    receive timeout in seconds (1-60) or 00h to disable
  13674.  0Eh  5 BYTEs    reserved
  13675.  
  13676. Bitfields for HUNTER 16 handshake:
  13677. Bit(s)    Description    (Table 0274)
  13678.  0-1    0: RTS off, 1: RTS hold, 2: RTS true
  13679.  2    DTR enabled
  13680.  4    CTS enabled
  13681.  5    DSR enabled
  13682.  6    DCD enabled
  13683. --------S-141F-------------------------------
  13684. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  13685.     AH = 1Fh
  13686.     DX = port number
  13687.     AL = direction
  13688.         00h read modem control register
  13689.         Return: BL = modem control register (see #0275)
  13690.             AH = status
  13691.         01h write modem control register
  13692.         BL = modem control register (see #0275)
  13693.         Return: AX = status
  13694. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  13695.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  13696. SeeAlso: AH=00h,AH=05h"SERIAL"
  13697.  
  13698. Bitfields for X00 FOSSIL modem control register:
  13699. Bit(s)    Description    (Table 0275)
  13700.  0    data terminal ready
  13701.  1    request to send
  13702.  2    OUT1
  13703.  3    OUT2 (interrupts) enabled
  13704.  4    LOOP
  13705.  5-7    reserved
  13706. --------S-1420-------------------------------
  13707. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  13708.     AH = 20h
  13709.     DX = port number
  13710. Return: AH = 00h if character was available
  13711.         AL = next character (removed from receive buffer)
  13712.     AX = FFFFh if no character available
  13713. SeeAlso: AH=0Ch,AH=21h"X00"
  13714. --------S-1420-------------------------------
  13715. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  13716.     AH = 20h
  13717.     AL = logical port (01h COM1, 02h COM2)
  13718.     DX = physical port number
  13719. Return: AX = status
  13720.         0000h successful
  13721.         FFFFh failed
  13722. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  13723. --------S-1420-------------------------------
  13724. INT 14 - MultiDOS Plus - INITIALIZE PORT
  13725.     AH = 20h
  13726.     AL = port parameters (see #0226 at AH=00h"SERIAL")
  13727.     DX = port number (0-3)
  13728. Return: AH = status
  13729.         00h successful
  13730.         41h no such port
  13731.         64h monitor mode already active
  13732. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  13733. --------S-1420-------------------------------
  13734. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE
  13735.     AH = 20h
  13736.     DX = port number
  13737. Return: AX = number of bytes in output buffer
  13738. SeeAlso: AH=0Ah"Digiboard"
  13739. --------S-1420------------------------------------
  13740. INT 14 - HUNTER 16 - SELECT COMMS PARAMETERS
  13741.     AH = 20h
  13742.     CX = channel number (00h COM1, 01h COM2, ...)
  13743.     DS:BX -> buffer with communications parameter (see #0273)
  13744. Return: AX = status
  13745.         0000h successful
  13746.         0001h invalid parameter
  13747. SeeAlso: AH=1Eh"HUNTER",AH=21h"HUNTER"
  13748. --------S-1421-------------------------------
  13749. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  13750.     AH = 21h
  13751.     AL = character
  13752.     DX = port number
  13753. Return: nothing
  13754. Notes:    the given character is inserted at the end of the receive buffer as if
  13755.       it had just arrived from the serial port; all normal receive
  13756.       processing (XON/XOFF, ^C/^K) is performed on the character
  13757.     fully re-entrant
  13758. SeeAlso: AH=20h"X00"
  13759. --------S-1421-------------------------------
  13760. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  13761.     AH = 21h
  13762.     DX = physical port number
  13763. Return: AX = status
  13764.         0000h successful
  13765.         FFFFh failed
  13766. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  13767. --------S-1421-------------------------------
  13768. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  13769.     AH = 21h
  13770.     AL = character to send
  13771.     DX = port number
  13772. Return: AH = status (see #0276)
  13773. Note:    monitor mode must have been turned on with AH=24h before calling
  13774. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  13775.  
  13776. (Table 0276)
  13777. Values for MultiDOS Plus status:
  13778.  00h    successful
  13779.  39h    no DSR or CTS
  13780.  3Ch    no DSR
  13781.  3Bh    no CTS
  13782.  41h    no such port
  13783.  42h    monitor mode not active
  13784.  97h    timed out
  13785. --------S-1421-------------------------------
  13786. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT
  13787.     AH = 21h
  13788.     AL = char to send
  13789.     DX = port number
  13790.     SI = timeout in timer ticks (0000h = default)
  13791. Return: after character is sent or timeout expires
  13792. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  13793.       operating system by The Software Link, Inc.
  13794. SeeAlso: AH=01h,AH=0Eh"Digiboard",AH=22h"PC-MOS"
  13795. --------S-1421------------------------------------
  13796. INT 14 - HUNTER 16 - EXTENDED CONTROL
  13797.     AH = 21h
  13798.     AL = command
  13799.         01h force transmission of buffer
  13800.         02h clear transmit buffer
  13801.         03h clear receive buffer
  13802.     DX = port (00h COM1, 01h COM2)
  13803. Return: AH = extended status
  13804. Desc:    executes the command on the selected port
  13805. SeeAlso: AH=1Eh"HUNTER",AH=20h"HUNTER",AH=22h"HUNTER",AH=24h"HUNTER"
  13806. --------S-1422-------------------------------
  13807. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  13808.     AH = 22h
  13809.     AL = logical port (01h COM1, 02h COM2)
  13810. Return: AX = status (0000h successful)
  13811. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  13812. --------S-1422-------------------------------
  13813. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  13814.     AH = 22h
  13815.     DX = port number
  13816. Return: AH = status (see also AH=21h"MultiDOS")
  13817.         00h successful
  13818.         AL = character
  13819.         3Dh framing and parity error
  13820.         3Eh overrun error
  13821.         3Fh framing error
  13822.         40h parity error
  13823.         96h ring buffer overflow
  13824. Note:    if no character is available, this function waits until a character
  13825.       arrives or an implementation-dependent timeout elapses
  13826. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  13827. --------S-1422-------------------------------
  13828. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT
  13829.     AH = 22h
  13830.     DX = port number
  13831.     SI = timeout in timer ticks (0000h = default)
  13832. Return: AH = port status (see also #0230 at AH=03h)
  13833.          bit 7 = 1 indicates time-out
  13834.     AL = character received
  13835. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  13836.       operating system by The Software Link, Inc.
  13837. SeeAlso: AH=02h,AH=0Fh"Digiboard",AH=21h"PC-MOS"
  13838. --------S-1422------------------------------------
  13839. INT 14 - HUNTER 16 - EXTENDED STATUS
  13840.     AH = 22h
  13841.     DX = port (00h COM1, 01h COM2)
  13842. Return: AH = extended status
  13843.     BX = number of characters in input buffer
  13844.     CX = number of characters in output buffer
  13845. Desc:    returns the most recent Extended Status code for the port
  13846. SeeAlso: AH=21h"HUNTER"
  13847. --------S-1423-------------------------------
  13848. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  13849.     AH = 23h
  13850.     AL = logical port (01h COM1, 02h COM2)
  13851.     DH = user ID
  13852.     DL = process ID (DH,DL both FFh for current task)
  13853. Return: AL = MW386 port mode (see #0277)
  13854.     CX = MW386 port number
  13855.     DH = owner's user ID
  13856.     DL = owner's task ID
  13857. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  13858.  
  13859. Bitfields for MW386 port mode:
  13860. Bit(s)    Description    (Table 0277)
  13861.  0    port is shared (spooler only)
  13862.  1    port is spooled instead of direct (spooler only)
  13863.  2    port is assigned as logical COM device, not in spooler
  13864.  3    port is free
  13865. --------S-1423-------------------------------
  13866. INT 14 - MultiDOS Plus - GET PORT STATUS
  13867.     AH = 23h
  13868.     DX = port number
  13869. Return: AH = line status (see #0230 at AH=03h)
  13870.     AL = modem status (see #0231 at AH=03h)
  13871. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  13872. --------S-1423-------------------------------
  13873. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP
  13874.     AH = 23h
  13875.     DX = port number
  13876.     BX = TCB segment/selector address of owner task
  13877. Return: nothing
  13878. SeeAlso: AH=0Dh"Digiboard",AH=21h"PC-MOS",AH=22h"PC-MOS"
  13879. --------S-1423------------------------------------
  13880. INT 14 - HUNTER 16 - CONTROL HANDSHAKE LINES
  13881.     AH = 23h
  13882.     BH = handshake line to set (00h RTS, 01h DTR)
  13883.     BL = new level (00h low, 01h high)
  13884. Return: nothing
  13885. Desc:    sets the handshake lines of COM1 to the desired level
  13886. SeeAlso: AH=21h"HUNTER",AH=24h"HUNTER"
  13887. --------S-1424-------------------------------
  13888. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  13889.     AH = 24h
  13890.     CX = physical I/O port number
  13891.     DS:DX -> configuration table (see #0278)
  13892. Return: AH = 00h
  13893. Note:    invalid port numbers are merely ignored
  13894. SeeAlso: INT 17/AH=96h
  13895.  
  13896. Format of Alloy MW386 configuration table:
  13897. Offset    Size    Description    (Table 0278)
  13898.  00h    BYTE    baud rate (see #0279)
  13899.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  13900.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  13901.  03h    BYTE    stop bits (00h=1, 01h=2)
  13902.  04h    BYTE    receive flow control
  13903.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  13904.  05h    BYTE    transmit flow control (as for receive)
  13905.  
  13906. (Table 0279)
  13907. Values for Alloy MW386 baud rate:
  13908.  00h    38400
  13909.  01h    19200
  13910.  02h    9600
  13911.  03h    7200
  13912.  04h    4800
  13913.  05h    3600
  13914.  06h    2400
  13915.  07h    2000
  13916.  08h    1200
  13917.  09h    600
  13918.  0Ah    300
  13919.  0Bh    150
  13920.  0Ch    134.5
  13921. SeeAlso: #0235
  13922. --------S-1424-------------------------------
  13923. INT 14 - MultiDOS Plus - SET MONITOR MODE
  13924.     AH = 24h
  13925.     AL = port status storage
  13926.         00h single status for entire receive buffer
  13927.         01h separate status kept for each byte in receive buffer
  13928.     DX = port number
  13929. Return: AH = status
  13930.         00h successful
  13931.         3Ah invalid status storage specified
  13932.         41h no such port
  13933.         64h monitor mode already active
  13934. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  13935.       port
  13936. SeeAlso: AH=20h"MultiDOS",AH=25h
  13937. --------S-1424-------------------------------
  13938. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ???
  13939.     AH = 24h
  13940. Return: ???
  13941. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  13942.       operating system by The Software Link, Inc.
  13943. --------S-1424------------------------------------
  13944. INT 14 - HUNTER 16 - CONTROL CTS HANDSHAKING
  13945.     AH = 24h
  13946.     AL = new CTS handshake state for COM1 (00h disabled, 01h enabled)
  13947. Return: nothing
  13948. SeeAlso: AH=23h"HUNTER",AH=25h"HUNTER",AH=26h"HUNTER"
  13949. --------S-1425-------------------------------
  13950. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  13951.     AH = 25h
  13952.     AL = function
  13953.         00h only clear buffers
  13954.         01h clear buffers and deactivate
  13955.     DX = port number
  13956. Return: AH = status
  13957.         00h successful
  13958.         3Ah invalid function
  13959.         41h no such port
  13960.         42h monitor mode not active
  13961. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  13962. --------S-1425------------------------------------
  13963. INT 14 - HUNTER 16 - CONTROL RS232 DRIVERS
  13964.     AH = 25h
  13965.     AL = new state of RS232 drivers (00h off, 01h on)
  13966. Return: nothing
  13967. Note:    this function can be used to save power by turning off the RS232
  13968.       drivers.  It can also be used to turn on the RS232 drivers before
  13969.       connecting to a remote system to avoid "garbage" while the drivers
  13970.       turn on.
  13971. SeeAlso: AH=23h"HUNTER",AH=24h"HUNTER",AH=26h"HUNTER"
  13972. --------S-1426------------------------------------
  13973. INT 14 - HUNTER 16 - CONTROL RI POWER UP
  13974.     AH = 26h
  13975.     AL = 00h enable RI power up
  13976.         else disable RI power up
  13977. Return: nothing
  13978. Desc:    control whether the Ring Indicator handshake can power up the Hunter
  13979. --------S-1427-------------------------------
  13980. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  13981.     AH = 27h
  13982.     DX = port number
  13983. Return: AH = status
  13984.         00h successful
  13985.         41h no such port
  13986.         42h monitor mode not active
  13987.     AL = number of characters in receive buffer
  13988. --------S-1427------------------------------------
  13989. INT 14 - HUNTER 16 - GET INSTALLED PROTOCOLS COUNT
  13990.     AH = 27h
  13991.     AL = number of extended protocols installed (since last call)
  13992. Return: AL = total number installed, including new ones
  13993. Desc:    Returns the number of extended communication protocols installed
  13994. SeeAlso: AH=25h"HUNTER",AH=28h"HUNTER"
  13995. --------S-1428------------------------------------
  13996. INT 14 - HUNTER 16 - GET PROTOCOL NAME
  13997.     AH = 28h
  13998.     AL = protocol handle
  13999.     DS:BX -> 8 character buffer for protocol name
  14000. Return: AH = status
  14001.         00h successful
  14002.         DS:BX buffer filled with the protocol name
  14003.         FFh failed
  14004. SeeAlso: AH=27h"HUNTER",AH=29h"HUNTER"
  14005. --------S-1429------------------------------------
  14006. INT 14 - HUNTER 16 - GET PROTOCOL HANDLE
  14007.     AH = 29h
  14008.     DS:BX -> buffer containing the protocol name
  14009. Return: AH = status
  14010.         00h successful
  14011.         AL = handle
  14012.         FFh failed
  14013. SeeAlso: AH=28h"HUNTER",AH=2Ah"HUNTER"
  14014. --------S-142A------------------------------------
  14015. INT 14 - HUNTER 16 - EXTENDED PROTOCOL MENU
  14016.     AH = 2Ah
  14017.     AL = protocol handle
  14018. Return: AH = status
  14019.         00h successful
  14020.         FFh failed
  14021.     AL = menu handle
  14022. SeeAlso: AH=29h"HUNTER",AH=2Bh"HUNTER"
  14023. --------S-142B------------------------------------
  14024. INT 14 - HUNTER 16 - GET EXTENDED PROTOCOL PARAMETERS
  14025.     AH = 2Bh
  14026.     AL = protocol handle
  14027.     DS:BX -> buffer for extended protocol parameters
  14028. Return: AH = status
  14029.         00h successful
  14030.         DS:BX buffer filled with extended parameters
  14031.         FFh failed
  14032. SeeAlso: AH=2Ah"HUNTER"
  14033. --------S-142C00----------------------------------
  14034. INT 14 - HUNTER 16 - GET DTR
  14035.     AX = 2C00h
  14036. Return: AH = 00h
  14037.     BL = current state
  14038.         00h     normal DTR operation
  14039.         else DTR is forced high
  14040. Desc:    Indicates whether the DTR signal on COM1 is forced high
  14041. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  14042.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  14043. SeeAlso: AH=2Ch"SET DTR"
  14044. --------S-142C------------------------------------
  14045. INT 14 - HUNTER 16 - SET DTR
  14046.     AH = 2Ch
  14047.     AL nonzero
  14048.     BL = new state
  14049.         00h     normal operation
  14050.         else force DTR high
  14051. Return: AH = 00h
  14052. Desc:    determine whether the DTR signal on COM1 should be forced high
  14053. SeeAlso: AX=2C00h
  14054. --------N-1436-------------------------------
  14055. INT 14 - ComShare - INSTALLATION CHECK
  14056.     AH = 36h
  14057. Return: AX = 4353h ('CS') if installed
  14058.         BX = bitmap of installed ports (bit 0: COM1 is gateway, etc.)
  14059.         CX reserved for future use
  14060.         WORD DX:[0100h] = ComShare version number
  14061. Program: The ComShare System is a modem-sharing program for NetBIOS and
  14062.       NetWare-based networks by NashaKala Corporation
  14063. Note:    ComShare supports the standard BIOS INT 14h calls with a slight
  14064.       change in the interpretation of speed values
  14065.       (see #0235 at AH=04h"SERIAL")
  14066. SeeAlso: AH=00h"SERIAL",AH=04h"SERIAL",AX=F4FFh
  14067. --------t-144000-----------------------------
  14068. INT 14 - I1541 - INSTALLATION CHECK
  14069.     AX = 4000h
  14070. Return: AX = 1541h if installed
  14071.         BH = I1541 major version (BCD)
  14072.         BL = I1541 minor version (BCD)
  14073.         CX = 0000h
  14074. --------t-144001-----------------------------
  14075. INT 14 - I1541 - TEST IF 1541 CABLE CONNECTED
  14076.     AX = 4001h
  14077. Return: CF clear if connected
  14078.         BL = LPT number where 1541 cable is connected (1..3)
  14079.     CF set if cable not connected
  14080. Desc:    scan all the LPT ports searching for the adapter cable
  14081. SeeAlso: AX=4000h
  14082. --------t-144002-----------------------------
  14083. INT 14 - I1541 - SELECT LPT PORT FOR OUTPUT
  14084.     AX = 4002h
  14085.     BL = LPT number (1..3)
  14086. Return: CF clear if successful
  14087.     CF set otherwise
  14088. Desc:    force the input output routines to work on the cable placed on LPT BL
  14089. SeeAlso: AX=4001h
  14090. --------t-144003-----------------------------
  14091. INT 14 - I1541 - RESET ALL DEVICES
  14092.     AX = 4003h
  14093. Return: nothing
  14094. Desc:    send a reset pulse of 100ms to all CBM devices
  14095. Note:    it is necessary to wait about 2 seconds after reset before executing
  14096.       other    instructions
  14097. SeeAlso: AX=4000h,AX=4004h
  14098. --------t-144004-----------------------------
  14099. INT 14 - I1541 - SEND LISTEN SIGNAL
  14100.     AX = 4004h
  14101.     BH = device number (0..15)
  14102. Return: CF clear if successful
  14103.     CF set on error
  14104.         AL = error number (see #0280)
  14105. SeeAlso: AX=4005h,AX=4006h
  14106.  
  14107. (Table 0280)
  14108. Values for I1541 error number:
  14109.  00h    device not present
  14110.  01h    listener not ready
  14111.  02h    missing EOI time-out
  14112.  03h    EOI not completed
  14113.  04h    data not released
  14114.  05h    frame error
  14115. --------t-144005-----------------------------
  14116. INT 14 - I1541 - SEND SECONDARY ADDRESS FOR LISTEN
  14117.     AX = 4005h
  14118.     BL = channel number and mode (see #0281)
  14119. Return: CF clear if successful
  14120.     CF set on error
  14121.         AL = error number (see #0280)
  14122. SeeAlso: AX=4004h,AX=4006h
  14123.  
  14124. Bitfields for I1541 channel number and mode:
  14125. Bit(s)    Description    (Table 0281)
  14126.  7-4    mode
  14127.     0110 read/write
  14128.     1110 close channel
  14129.     1111 open channel
  14130.  3-0    channel number
  14131. --------t-144006-----------------------------
  14132. INT 14 - I1541 - SEND UNLISTEN SIGNAL
  14133.     AX = 4006h
  14134. Return: CF clear if successful
  14135.     CF set on error
  14136.         AL = error number (see #0280)
  14137. SeeAlso: AX=4004h,AX=4005h
  14138. --------t-144007-----------------------------
  14139. INT 14 - I1541 - SEND TALK SIGNAL
  14140.     AX = 4007h
  14141.     BH = device number (0-15)
  14142. Return: CF clear if successful
  14143.     CF set on error
  14144.         AL = error number (see #0280)
  14145. SeeAlso: AX=4008h,AX=4009h
  14146. --------t-144008-----------------------------
  14147. INT 14 - I1541 - SEND SECONDARY ADDRESS FOR TALK
  14148.     AX = 4008h
  14149.     BL = channel number and mode (see #0281)
  14150. Return: CF clear if successful
  14151.     CF set on error
  14152.         AL = error number (see also #0280)
  14153.         40h turn around time-out
  14154. SeeAlso: AX=4007h,AX=4009h
  14155. --------t-144009-----------------------------
  14156. INT 14 - I1541 - SEND UNTALK SIGNAL
  14157.     AX = 4009h
  14158. Return: CF clear if successful
  14159.     CF set on error
  14160.        AL = error number (see #0280)
  14161. SeeAlso: AX=4007h,AX=4008h
  14162. --------t-14400A-----------------------------
  14163. INT 14 - I1541 - SEND A BYTE TO A DEVICE
  14164.     AX = 400Ah
  14165.     BL = byte to send
  14166.     CL = last-byte flag
  14167.         00h more bytes follow
  14168.         01h this is the last byte to be sent
  14169. Return: CF clear if successful
  14170.     CF set on error
  14171.         AL = error number (see #0280)
  14172. SeeAlso: AX=4000h,AX=400Bh
  14173. --------t-14400B-----------------------------
  14174. INT 14 - I1541 - RECEIVE A BYTE FROM A DEVICE
  14175.     AX = 400Bh
  14176. Return: CF clear if successful
  14177.         AL = byte received
  14178.         CL = last-byte flag
  14179.         00h more bytes to follow
  14180.         01h received byte is the last
  14181.     CF set on error
  14182.         AL = error number
  14183.         80h EOI response required
  14184.         81h talker not ready
  14185.         82h clock not set
  14186.         83h clock not released
  14187.         CL = 00h
  14188. SeeAlso: AX=4000h,AX=400Ah
  14189. --------t-14400C-----------------------------
  14190. INT 14 - I1541 - WAIT
  14191.     AX = 400Ch
  14192.     CX = number of 838ns microticks to wait (0000h means 65536, ~55ms)
  14193. Return: after wait period elapses
  14194. SeeAlso: AX=4000h,AX=400Dh
  14195. --------t-14400D-----------------------------
  14196. INT 14 - I1541 - LONGWAIT
  14197.     AX = 400Dh
  14198.     DX:CX = number of 838ns microticks to wait
  14199.           (0000h:0000h means 4294967296, about one hour)
  14200. Example: To wait 1s you must set DX:CX=(1s/838ns)=1193180
  14201. SeeAlso: AX=4000h,AX=400Ch
  14202. --------t-14400E-----------------------------
  14203. INT 14 - I1541 - GET INFO
  14204.     AX = 400Eh
  14205. Return: AX = LPT port I/O address in use (0000h if no cable in use)
  14206.     BL = LPT number (1..3) in use (00h if no cable in use)
  14207.     CF set if the cable is auto-detectable
  14208.     CF clear if cable could not be auto-detected or is not present
  14209. SeeAlso: AX=4000h
  14210. --------S-1456-------------------------------
  14211. INT 14 U - BWCOM14 - INSTALLATION CHECK
  14212.     AH = 56h
  14213. Return: CX = 0001h if installed
  14214. Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem
  14215.       connected to the serial port) distributed as part of the
  14216.       Beame&Whiteside BW-NFS package
  14217. SeeAlso: AH=57h,AH=58h,INT 2F/AX=DF00h/BX=5445h
  14218. --------S-1457-------------------------------
  14219. INT 14 U - BWCOM14 - INITIALIZE
  14220.     AH = 57h
  14221.     DL = port number
  14222. Return: AL = initialization status (00h successful, 01h already initialized)
  14223.     CX = port status (0001h port redirected, 0002h and FFFFh failed)
  14224. Note:    after this call, all invocations of INT 14/AH=00h-03h for the specified
  14225.       port will be handled by BWCOM14 until AH=58h is called
  14226. SeeAlso: AH=00h"SERIAL",AH=56h,AH=58h
  14227. --------S-1458-------------------------------
  14228. INT 14 U - BWCOM14 - SHUTDOWN
  14229.     AH = 58h
  14230. Return: CX = status (0001h successful, 0002h not initialized)
  14231. Note:    after this call, BWCOM14 will no longer redirect the COM port
  14232. SeeAlso: AH=56h,AH=57h
  14233. --------N-146F--BXFFFE-----------------------
  14234. INT 14 U - Connection Manager - ???
  14235.     AH = 6Fh
  14236.     BX = FFFEh
  14237.     ???
  14238. Return: ???
  14239. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  14240.       serial ports over an IPX or NetBIOS-based network
  14241. --------N-146F--BXFFFF-----------------------
  14242. INT 14 - Connection Manager - INSTALLATION CHECK
  14243.     AH = 6Fh
  14244.     BX = FFFFh
  14245. Return: DX:BX -> Connection Manager Communication Table if installed
  14246.     BX = FFFFh if not installed
  14247. SeeAlso: AH=0Dh/DX=FFFFh
  14248. --------S-146F00-----------------------------
  14249. INT 14 - HP Vectra EX-BIOS - "F14_INQUIRE" - INSTALLATION CHECK
  14250.     AX = 6F00h
  14251.     BX <> 4850h (usually set to 0000h for simplicity)
  14252. Return: BX = 4850h ("HP") if HP Extended BIOS serial port extensions available
  14253.     AX destroyed
  14254. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  14255. SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,INT 10/AX=6F00h,INT 14/AX=6F00h
  14256. SeeAlso: INT 17/AX=6F00h,INT 33/AX=6F00h
  14257. --------S-146F01-----------------------------
  14258. INT 14 - HP Vectra EX-BIOS - "F14_EXINIT" - INITIALIZE SERIAL PORT
  14259.     AX = 6F01h
  14260.     BX = port attributes (see #0282)
  14261.     DX = port number (0-3)
  14262. Return: AH = line status (see #0230)
  14263.     AL = modem status (see #0231)
  14264. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  14265. SeeAlso: AX=6F00h
  14266.  
  14267. Bitfields for HP Vectra Extended BIOS serial port attributes:
  14268. Bit(s)    Description    (Table 0282)
  14269.  8-5    data rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200)
  14270.  4-3    parity
  14271.     00 none
  14272.     01 odd
  14273.     10 none
  14274.     11 even
  14275.  2    stop bits (0 = one, 1 = two)
  14276.  1-0    bits per character
  14277.     10 seven-bit characters
  14278.     11 eight-bit characters
  14279.     0x undefined
  14280. --------S-146F02-----------------------------
  14281. INT 14 - HP Vectra EX-BIOS - "F14_PUT_BUFFER" - TRANSMIT BUFFER
  14282.     AX = 6F02h
  14283.     CX = number of characters in buffer
  14284.     DX = port number (0-3)
  14285.     ES:DI -> buffer containing characters
  14286. Return: AH = line status (see #0230)
  14287.     AL = modem status (see #0231)
  14288.     CX = number of bytes actually sent
  14289.     ES:DI -> next byte to be transferred (unchanged if all bytes sent)
  14290. Desc:    send characters from the specified buffer until all characters have
  14291.       been sent or an error/timeout is encountered
  14292. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  14293. SeeAlso: AX=6F00h,AX=6F03h,AX=6F04h,INT 17/AX=6F02h
  14294. --------S-146F03-----------------------------
  14295. INT 14 - HP Vectra EX-BIOS - "F14_GET_BUFFER" - READ DATA INTO BUFFER
  14296.     AX = 6F03h
  14297.     CX = size of buffer
  14298.     DX = port number (0-3)
  14299.     ES:DI -> buffer for received characters
  14300. Return: AH = line status (see #0230)
  14301.     ---on error (AH bit 7 set)---
  14302.        AL = 00h
  14303.        ES:DI -> next byte to be transferred
  14304.     ---if successful---
  14305.        AL = last byte read
  14306.        ES:DI unchanged
  14307.     CX = number of bytes read
  14308. Desc:    read characters into the specified buffer until the buffer is filled
  14309.       or a timeout occurs
  14310. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  14311.     polls the Data Set Ready modem status and Data Ready line status bits
  14312.       to determine when characters are available
  14313. SeeAlso: AX=6F00h,AX=6F02h,AX=6F04h
  14314. --------S-146F04-----------------------------
  14315. INT 14 - HP Vectra EX-BIOS - "F14_TRM_BUFFER" - READ UNTIL TERMINATOR
  14316.     AX = 6F04h
  14317.     BL = lowest termination character
  14318.     BH = highest termination character
  14319.     CX = size of buffer
  14320.     DX = port number (0-3)
  14321.     ES:DI -> buffer for received characters
  14322. Return: AH = line status (see #0230)
  14323.     ---on error (AH bit 7 set)---
  14324.        AL = 00h
  14325.        ES:DI -> next byte to be transferred
  14326.     ---if successful---
  14327.        AL = last byte read
  14328.        ES:DI unchanged
  14329.     CX = number of bytes read
  14330. Desc:    read characters into the specified buffer until the buffer is filled,
  14331.       a character in the specified range is received, or a timeout occurs
  14332. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  14333.     polls the Data Set Ready modem status and Data Ready line status bits
  14334.       to determine when characters are available
  14335. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h
  14336. --------U-147000-----------------------------
  14337. INT 14 - NEWCOM - INSTALLATION CHECK
  14338.     AX = 7000h
  14339. Return: AX = 4E43h ('NC') if installed
  14340.     BX = 4F4Dh ('OM') if installed
  14341.         CH = major version number
  14342.         CL = minor version number
  14343.         DH = patch level
  14344.         DL = language (currently: 00h English, 01h French)
  14345. Program: Newcom is a DOS commandline-enhancer by kilobug@kali.isicom.fr
  14346. SeeAlso: INT 2F/AX=D44Dh
  14347. --------S-147E-------------------------------
  14348. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  14349.     AH = 7Eh
  14350.     AL = code assigned to external application (80h-BFh)
  14351.         80h reserved for communications FOSSIL
  14352.         81h video FOSSIL
  14353.         82h reserved for keyboard FOSSIL
  14354.         83h reserved for system FOSSIL
  14355.     ES:DX -> entry point
  14356. Return: AX = 1954h
  14357.     BL = code assigned to application (same as input AL)
  14358.     DH = 00h failed
  14359.          01h successful
  14360. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  14361. --------S-147F-------------------------------
  14362. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  14363.     AH = 7Fh
  14364.     AL = code assigned to external application
  14365.     ES:DX -> entry point
  14366. Return: AX = 1954h
  14367.     BL = code assigned to application (same as input AL)
  14368.     DH = 00h failed
  14369.          01h successful
  14370. SeeAlso: AH=7Eh
  14371. --------S-1480-------------------------------
  14372. INT 14 - COMMUNICATIONS FOSSIL
  14373.     AH = 80h
  14374. SeeAlso: AH=7Eh
  14375. --------S-1480-------------------------------
  14376. INT 14 - COURIERS.COM - INSTALLATION CHECK
  14377.     AH = 80h
  14378. Return: AH = E8h if loaded
  14379. Program: COURIERS is a TSR utility by PC Magazine
  14380. --------S-148000-----------------------------
  14381. INT 14 - ARTICOM - INSTALLATION CHECK
  14382.     AX = 8000h
  14383. Return: AL = FFh if installed
  14384.         BH = major version
  14385.         BL = minor version
  14386. Program: ArtiCom is an asynchronous communications driver by Artisoft which
  14387.       works on top of NetBIOS and allows modem/serial-port sharing by
  14388.       programs using INT 14 for serial I/O.
  14389. Note:    ArtiCom supports 32 simultaneous COM ports using multiport cards and
  14390.       drivers
  14391. SeeAlso: AH=00h"SERIAL",AH=01h,AH=02h,AH=03h,AH=04h"SERIAL",AH=05h"SERIAL"
  14392. SeeAlso: AX=8001h,AX=8002h
  14393. --------S-148000-----------------------------
  14394. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET ERROR CODE AND BUFFER STATUS
  14395.     AX = 8000h
  14396.     DX = port number
  14397. Return: AX = code for last error (see #0283)
  14398.     BX = number of characters in output buffer
  14399.     CX = nubmer of characters in input buffer
  14400.     DX = state flag (see #0284)
  14401. Program: COMM-DRV is a universal serial communications driver by Willies'
  14402.       Computer Software Company, which supports standard INT 14 and
  14403.       FOSSIL calls as well as its own interfaces
  14404. SeeAlso: AX=8001h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  14405.  
  14406. (Table 0283)
  14407. Values for COMM-DRV error code:
  14408.  00h    no error
  14409.  01h    buffer not set or attempted to change buffer for active port
  14410.  02h    port not active
  14411.  03h    transmit buffer full
  14412.  04h    receive buffer full
  14413.  05h    syntax error
  14414.  06h    invalid buffer size
  14415.  07h    invalid port
  14416.  08h    handler changed
  14417.  09h    invalid baud rate
  14418.  0Ah    invalid parity setting
  14419.  0Bh    invalid data length
  14420.  0Ch    invalid number of stop bits
  14421.  0Dh    invalid protocol number
  14422.  0Eh    IRQ changed
  14423.  0Fh    port changged
  14424.  10h    invalid threshold setting
  14425.  11h    invalid IRQ number
  14426.  12h    interrupts not enabled
  14427.  13h    invalid break syntax
  14428.  14h    fatal error
  14429.  15h    CTS error
  14430.  16h    invalid RS232 I/O port address
  14431.  17h    environment variable not set
  14432.  18h    error on IOCTL call
  14433.  19h    error during atexit cleanup
  14434.  1Ah    error mapping for direct calls
  14435.  1Bh    error opening device
  14436.  1Ch    unable to allocate memory
  14437.  1Dh    error on external micro card
  14438.  1Eh    card changed error
  14439.  1Fh    card type error
  14440.  20h    not supported
  14441.  21h    parent port error
  14442.  22h    card command buffer full
  14443.  23h    no subdevice for this port
  14444.  24h    unknown error
  14445.  25h    external card busy
  14446.  26h    no more timers available
  14447.  27h    INT 14 vector changed
  14448.  28h    INT 08 vector changed
  14449.  29h    DPMI error
  14450.  2Ah    TSR buffer too small (or nonexistent)
  14451.  2Bh    out of asynchronous resources
  14452.  2Ch    out of timer resources
  14453.  2Dh    out of "other" timer resources
  14454.  2Eh    file I/O error
  14455.  2Fh    hardware memory > 64K
  14456.  
  14457. Bitfields for state flag :
  14458. Bit(s)    Description    (Table 0284)
  14459.  0    port is active
  14460.  1    output throttled (XOFF received, or DSR or CTS reset)
  14461.  2    input throttled (XOFF sent, or DTR or RTS reset)
  14462. --------S-148001-----------------------------
  14463. INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
  14464.     AX = 8001h
  14465. Return: AX = error code, if error (see #0286)
  14466. SeeAlso: AX=8000h"ARTICOM",AX=8002h"ARTICOM",AX=8003h"ARTICOM"
  14467. Index:    uninstall;ARTICOM
  14468. --------S-148001-----------------------------
  14469. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  14470.     AX = 8001h
  14471.     DX = port number
  14472. Return: BX:DI -> Port Control Block (see #0293)
  14473. SeeAlso: AX=8000h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  14474. --------S-148002-----------------------------
  14475. INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
  14476.     AX = 8002h
  14477.     ES:DI -> buffer for redirector status structure (see #0285)
  14478. Return: AX = error code, if error (see #0286)
  14479. SeeAlso: AX=8000h"ARTICOM",AX=8003h"ARTICOM"
  14480.  
  14481. Format of ARTICOM redirector status:
  14482. Offset    Size    Description    (Table 0285)
  14483.  00h    WORD    redirector major and minor version numbers
  14484.  02h    WORD    redirectable ports found
  14485.  04h    WORD    redirectable ports + local ports found
  14486.  06h    WORD    redirector internal buffer size
  14487.  08h    WORD    maximum servers maintained
  14488.  0Ah    WORD    number of adapters found
  14489. --------S-148002-----------------------------
  14490. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  14491.     AX = 8002h
  14492.     DX = port number
  14493. Return: AH bit 7 set on error
  14494.     AH bit 7 clear if successful
  14495.         BX:DI -> Port Control Block (see #0293) (modifyable portion only)
  14496. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8003h"COMM-DRV"
  14497. --------S-148003-----------------------------
  14498. INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
  14499.     AX = 8003h
  14500.     CX = error number to translate (see #0286)
  14501. Return: ES:DI -> ASCIZ error text or 0000h:0000h if unable to translate
  14502. SeeAlso: AX=8000h
  14503.  
  14504. (Table 0286)
  14505. Values for ARTICOM error codes:
  14506.  00h    "No error"
  14507.  01h    "An invalid port number was specified"
  14508.  02h    "Port is already redirected"
  14509.  03h    "Too many ports redirected"
  14510.  04h    "Cannot locate the server"
  14511.  05h    "Server is busy"
  14512.  06h    "Access denied"
  14513.  07h    "Resource in use"
  14514.  08h    "Resource in use - request queued"
  14515.  09h    "No such resource"
  14516.  0Ah    "Invalid username/password pair"
  14517.  0Bh    "Noncompatible version number"
  14518.  0Ch    "Can't remove from memory"
  14519.  0Dh    "Bad NETBIOS adapter number"
  14520.  0Eh    "No more entries in list"
  14521.  0Fh    "Resource is not available at this time"
  14522.  10h    "Invalid value to INT 14 call"
  14523. --------S-148003-----------------------------
  14524. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET I/O BUFFER SIZES
  14525.     AX = 8003h
  14526.     DX = port number
  14527. Return: AX = number of characters in input buffer
  14528.     BX = input buffer size
  14529.     CX = number of characters in output buffer
  14530.     DX = output buffer size
  14531. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8002h"COMM-DRV"
  14532. --------S-148004-----------------------------
  14533. INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
  14534.     AX = 8004h
  14535.     DX = port to redirect (COM1=0, COM2=1, ...)
  14536.     CH = attach type
  14537.     CL = adapter to use for attach, 0FFh to search all
  14538.     ES:DI -> attachment structure (see #0287)
  14539. Return: AX = error code, if error (see #0286)
  14540. Note:    The wildcard '*' is supported in the server and resource fields.  If
  14541.       wild cards are used then the first matching available server is
  14542.       attached.
  14543. SeeAlso: AX=8000h,AX=8003h,AX=8005h
  14544.  
  14545. Format of ARTICOM attachment structure:
  14546. Offset    Size    Description    (Table 0287)
  14547.  00h 16 BYTEs    server to look for attach
  14548.  10h 16 BYTEs    attach to resource name
  14549.  20h 16 BYTEs    username for attach
  14550.  30h 16 BYTEs    password for username or resource
  14551.  40h    BYTE    attach type
  14552.         00h normal
  14553.         01h queue if resource is in use (not yet supported in v1.00)
  14554. --------S-148005-----------------------------
  14555. INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
  14556.     AX = 8005h
  14557.     DX = port to detach (COM1=0, COM2=1, ...)
  14558. Return: AX = error code, if error (see #0286)
  14559. Note:    only a previously attached resource can be detached
  14560. SeeAlso: AX=8000h,AX=8003h,AX=8004h
  14561. --------S-148006-----------------------------
  14562. INT 14 - ARTICOM - GET RESOURCE INFORMATION
  14563.     AX = 8006h
  14564.     BX = remote port (COM1=0, COM2=1, ...)
  14565.     CL = adapter number, FFh to try all adapters
  14566.     ES:DI -> resource information structure (see #0288)
  14567.     DS:SI -> 16 byte server name. See note.
  14568. Return: AX = error code, if error (see #0286)
  14569.     BX = next remote port, recall to get next resource info
  14570. Note:    Wild cards supported in both the resource field and server name
  14571.       string DS:SI. If wild cards used then first matching available
  14572.       resource information is searched. Set the resource field to FFh to
  14573.       return all resources.
  14574. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
  14575.  
  14576. Format of ARTICOM resource information structure:
  14577. Offset    Size    Description    (Table 0288)
  14578.  00h    BYTE    00h = free, else used
  14579.  01h 16 BYTEs    resource name
  14580.  11h 16 BYTEs    username of resource user
  14581.  21h    WORD    amount of time used
  14582.  23h    WORD    amount of time remaining
  14583.  53h 48 BYTEs    description of resource
  14584.  93h 64 BYTEs    initialization string for modem
  14585.  B3h 32 BYTEs    dial string for modem
  14586.  D3h 32 BYTEs    hang-up string for modem
  14587. --------S-148007-----------------------------
  14588. INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
  14589.     AX = 8007h
  14590.     DX = port index (COM1=0, COM2=1, ...)
  14591.     ES:DI -> buffer for port information structure (see #0289)
  14592. Return: CF clear if redirection info returned and port is redirected
  14593.     CF set if not a redirected port
  14594.     AX = error code, if error (see #0286)
  14595. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  14596.  
  14597. Format of ARTICOM port information structure:
  14598. Offset    Size    Description    (Table 0289)
  14599.  00h 16 BYTEs    server name resource is on
  14600.  10h    BYTE    adapter number server is on
  14601.  11h 16 BYTEs    resource name
  14602.  21h    WORD    remote port index, use to get additional information
  14603.  23h    WORD    buffer size
  14604.  25h    WORD    baud rate (see #0290)
  14605.  26h    BYTE    modem status register
  14606.  27h    BYTE    modem control register
  14607.  28h    BYTE    line status register
  14608.  29h    BYTE    line control register
  14609.  2Ah    BYTE    flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
  14610.  2Bh    WORD    send timeout in ticks
  14611.  2Dh    WORD    receive timeout in ticks
  14612.  2Fh    WORD    time used on remote port
  14613.  31h    WORD    time left before timeout
  14614.  33h    BYTE    if server changes allowed?
  14615.  34h    WORD    FFFFh (-1) if connection ok, else old port index
  14616.  
  14617. (Table 0290)
  14618. Values for ARTICOM baud rate:
  14619.  00h    110
  14620.  01h    150
  14621.  02h    300
  14622.  03h    600
  14623.  04h    1200
  14624.  05h    2400
  14625.  06h    4800
  14626.  07h    9600
  14627.  08h    19200
  14628.  09h    38400
  14629.  0Ah    57600
  14630.  0Bh    115200
  14631.  0Ch    134.5
  14632.  0Dh    1800
  14633.  0Eh    2000
  14634.  0Fh    3600
  14635.  10h    7200
  14636. SeeAlso: #0235
  14637. --------S-148008-----------------------------
  14638. INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
  14639.     AX = 8008h
  14640.     BX = server index (0,1,...)
  14641.     ES:DI -> server name structure (see #0291)
  14642. Return: AX = error code, if error (see #0286)
  14643.     BX = next remote port, repeat call to get next available server
  14644. Note:    the wildcard '*' is supported in the server name field.     Set the
  14645.       server name to FFh to search for all servers.
  14646. SeeAlso: AX=8000h,AX=8003h,AX=8007h
  14647.  
  14648. Format of ARTICOM server name structure:
  14649. Offset     Size      Description    (Table 0291)
  14650.   00h 16 BYTEs      (call) ASCIZ server name
  14651.   10h     BYTE      (ret) the adapter server is found
  14652. --------S-148009-----------------------------
  14653. INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS
  14654.     AX = 8009h
  14655.     BX = send timeout in ticks
  14656.     CX = receive timeout in ticks
  14657.     DX = port index (COM1=0, COM2=1, ...)
  14658. Return: nothing
  14659. SeeAlso: AX=8000h,AX=800Ah
  14660. --------S-14800A-----------------------------
  14661. INT 14 - ARTICOM - MODIFY FLOW CONTROL
  14662.     AX = 800Ah
  14663.     BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
  14664.     DX = port index (COM1=0, COM2=1, ...)
  14665. Return: AX = error code, if error (see #0286)
  14666. Note:    for attached ports only!
  14667. SeeAlso: AX=8000h,AX=8003h,AX=8009h
  14668. --------S-148025-----------------------------
  14669. INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
  14670.     AX = 8025h
  14671.     DS:DX -> address of trap function (see #0292) to call on read/write
  14672. Return: nothing
  14673. Note:    setting the vector to a user function allows the redirector's activity
  14674.       to be monitored.
  14675. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
  14676.  
  14677. (Table 0292)
  14678. Values ARTICOM trap function is called with:
  14679.     AH = operation
  14680.         80h reading character
  14681.         81h writing character
  14682.     AL = character
  14683. Return: AX must be preserved
  14684.     far JUMP to old trap function (see AX=8035h)
  14685. --------S-148035-----------------------------
  14686. INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
  14687.     AX = 8035h
  14688. Return: ES:BX -> address of current send/receive routine
  14689. Note:    this function returns the address of the routine which is called
  14690.       inside A-REDIR.EXE each time a character is received or sent on the
  14691.       active COM port.
  14692. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
  14693. --------S-1481-------------------------------
  14694. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  14695.     AH = 81h
  14696.     AL = port number (1-4)
  14697. Return: AH = 00h port available
  14698.          01h port exists but already in use
  14699.          02h port nonexistent
  14700. Program: COURIERS is a TSR utility by PC Magazine
  14701. SeeAlso: AH=83h,AH=8Dh
  14702. --------S-1481-------------------------------
  14703. INT 14 - COMM-DRV - EXTENDED INITIALIZATION
  14704.     AH = 81h
  14705.     BX:DI -> port control block (see #0293)
  14706.     DX = port number
  14707. Return: AH = line status register (see #0230)
  14708.         error if bit 7 set
  14709.     AL = modem status register (see #0231)
  14710. Program: COMM-DRV is a universal serial communications driver by Willies'
  14711.       Computer Software Company, which supports standard INT 14 and
  14712.       FOSSIL calls as well as its own interfaces
  14713. Note:    AX=8001h should be called first to fill in the port control block
  14714. SeeAlso: AH=00h,AX=8001h,AH=82h"COMM-DRV",AH=86h"COMM-DRV"
  14715.  
  14716. Format of COMM-DRV port control block:
  14717. Offset    Type    Description    (Table 0293)
  14718.  00h    WORD    port IO address
  14719.  02h    WORD    port IRQ
  14720.  04h    WORD    baud rate
  14721.  06h    WORD    parity
  14722.  08h    WORD    data bits
  14723.  0Ah    WORD    stop bits
  14724.  0Ch    WORD    break status (0000h off)
  14725.  0Eh    WORD    flow control protocol
  14726.  10h    BYTE    input block
  14727.  11h    BYTE    output block
  14728.  12h    WORD    low threshold
  14729.  14h    WORD    high threshold
  14730.  16h    WORD    segment of buffer
  14731.  18h    WORD    offset of buffer
  14732.  1Ah    WORD    input buffer length
  14733.  1Ch    WORD    output buffer length
  14734.  1Eh    BYTE    auxiliary address
  14735.  1Fh    BYTE    spare
  14736.  20h  4 WORDs    spares
  14737. --------V-148100-----------------------------
  14738. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  14739.     AX = 8100h
  14740.     ES:DI -> buffer for VFOSSIL information (see #0294)
  14741. Return: AX = 1954h if installed
  14742. SeeAlso: AH=7Eh,AX=8101h
  14743.  
  14744. Format of VFOSSIL information:
  14745. Offset    Size    Description    (Table 0294)
  14746.  00h    WORD    size of information in bytes, including this field
  14747.  02h    WORD    VFOSSIL major version
  14748.  04h    WORD    VFOSSIL revision level
  14749.  06h    WORD    highest VFOSSIL application function supported
  14750. --------V-148101-----------------------------
  14751. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  14752.     AX = 8101h
  14753.     ES:DI -> buffer for application function table (see #0295)
  14754.     CX = length of buffer in bytes
  14755. Return: AX = 1954h if installed
  14756.         BH = highest VFOSSIL application function supported
  14757. Note:    the number of initialized pointers in the application function table
  14758.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  14759.       will be initialized
  14760. SeeAlso: AX=8102h
  14761.  
  14762. Format of VFOSSIL application function table:
  14763. Offset    Size    Description    (Table 0295)
  14764.  00h    DWORD    -> function to query current video mode (VioGetMode)(see #0300)
  14765.  04h    DWORD    -> function to set video mode (VioSetMode) (see #0301)
  14766.  08h    DWORD    -> function to query hardware config (VioGetConfig) (see #0302)
  14767.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY) (see #0303)
  14768.  10h    DWORD    -> function to get current ANSI state (VioGetANSI) (see #0304)
  14769.  14h    DWORD    -> function to set new ANSI state (VioSetANSI) (see #0305)
  14770.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  14771.           (see #0306)
  14772.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos) (see #0307)
  14773.  20h    DWORD    -> function to get cursor shape (VioGetCurType) (see #0308)
  14774.  24h    DWORD    -> function to set cursor shape (VioSetCurType) (see #0309)
  14775.  28h    DWORD    -> function to scroll screen up (VioScrollUp) (see #0310)
  14776.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn) (see #0311)
  14777.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  14778.           (see #0312)
  14779.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  14780.           (see #0313)
  14781.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  14782.           (see #0314)
  14783.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  14784.           (see #0315)
  14785.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  14786.           (see #0316)
  14787.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  14788.           (see #0317)
  14789.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  14790.           (see #0318)
  14791.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  14792.           (see #0319)
  14793.  
  14794. Format of VFOSSIL video mode data structure:
  14795. Offset    Size    Description    (Table 0296)
  14796.  00h    WORD    length of structure including this field
  14797.  02h    BYTE    mode characteristics
  14798.         bit 0: clear if MDA, set otherwise
  14799.         bit 1: graphics mode
  14800.         bit 2: color disabled (black-and-white)
  14801.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  14802.  04h    WORD    number of text columns
  14803.  06h    WORD    number of text rows
  14804.  08h    WORD    reserved
  14805.  0Ah    WORD    reserved
  14806.  0Ch    DWORD    reserved
  14807. SeeAlso: #0300,#0301
  14808.  
  14809. Format of VFOSSIL video configuration data:
  14810. Offset    Size    Description    (Table 0297)
  14811.  00h    WORD    structure length including this field
  14812.  02h    WORD    adapter type
  14813.         00h monochrome/printer
  14814.         01h CGA
  14815.         02h EGA
  14816.         03h VGA
  14817.         07h 8514/A
  14818.  04h    WORD    display type
  14819.         00h monochrome
  14820.         01h color
  14821.         02h enhanced color
  14822.         09h 8514
  14823.  06h    DWORD    adapter memory size
  14824. SeeAlso: #0302
  14825.  
  14826. Format of VFOSSIL cursor type record:
  14827. Offset    Size    Description    (Table 0298)
  14828.  00h    WORD    cursor start line
  14829.  02h    WORD    cursor end line
  14830.  04h    WORD    cursor width (always 01h)
  14831.  06h    WORD    cursor attribute (FFFFh = hidden)
  14832.  
  14833. (Table 0299)
  14834. Values for VFOSSIL error code:
  14835.  0000h    successful
  14836.  0074h    internal VIO failure
  14837.  0163h    unsupported mode
  14838.  0166h    invalid row value
  14839.  0167h    invalid column value
  14840.  017Eh    buffer too small
  14841.  01A5h    invalid VIO parameter
  14842.  01B4h    invalid VIO handle
  14843.  
  14844. (Table 0300)
  14845. Call VioGetMode with:
  14846.     STACK:    WORD    VIO handle (must be 00h)
  14847.         DWORD    pointer to video mode data structure (see #0296)
  14848. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0299)
  14849. SeeAlso: #0301
  14850.  
  14851. (Table 0301)
  14852. Call VioSetMode with:
  14853.     STACK:    WORD    VIO handle (must be 00h)
  14854.         DWORD    pointer to video mode data structure (see #0296)
  14855. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see #0299)
  14856. SeeAlso: #0300
  14857.  
  14858. (Table 0302)
  14859. Call VioGetConfig with:
  14860.     STACK:    WORD    VIO handle (must be 00h)
  14861.         DWORD    pointer to video configuration data buffer (see #0297)
  14862. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0299)
  14863.  
  14864. (Table 0303)
  14865. Call VioWrtTTY with:
  14866.     STACK:    WORD    VIO handle (must be 00h)
  14867.         WORD    length of string
  14868.         DWORD    pointer to character string to be written to screen
  14869. Return: AX = error code (00h, 74h, 1B4h) (see #0299)
  14870. Notes:    write wraps at end of line and terminates if it reaches end of screen
  14871.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  14872.       not required to be reentrant; in non-ANSI mode, the function is
  14873.       reentrant and may be called from within an MS-DOS function call
  14874.  
  14875. (Table 0304)
  14876. Call VioGetANSI with:
  14877.     STACK:    WORD    VIO handle (must be 00h)
  14878.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  14879.             or 01h if ANSI is on
  14880. Return: AX = error code (00h, 74h, 1B4h) (see #0299)
  14881. SeeAlso: #0305
  14882.  
  14883. (Table 0305)
  14884. Call VioSetANSI with:
  14885.     STACK:    WORD    VIO handle (must be 00h)
  14886.         DWORD    pointer to WORD indicating new state of ANSI
  14887.             00h off, 01h on
  14888. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0299)
  14889. SeeAlso: #0304
  14890.  
  14891. (Table 0306)
  14892. Call VioGetCurPos with:
  14893.     STACK:    WORD    VIO handle (must be 00h)
  14894.         DWORD    pointer to WORD to hold current cursor column (0-based)
  14895.         DWORD    pointer to WORD to hold current cursor row (0-based)
  14896. Return: AX = error code (00h, 74h, 1B4h) (see #0299)
  14897. SeeAlso: #0307
  14898.  
  14899. (Table 0307)
  14900. Call VioSetCurPos with:
  14901.     STACK:    WORD    VIO handle (must be 00h)
  14902.         WORD    cursor column
  14903.         WORD    cursor row
  14904. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  14905. Note:    if either coordinate is invalid, the cursor is not moved
  14906. SeeAlso: #0306
  14907.  
  14908. (Table 0308)
  14909. Call VioGetCurType with:
  14910.     STACK:    WORD    VIO handle (must be 00h)
  14911.         DWORD    pointer to cursor type record (see #0298)
  14912. Return: AX = error code (00h, 74h, 1B4h) (see #0299)
  14913. SeeAlso: #0309
  14914.  
  14915. (Table 0309)
  14916. Call VioSetCurType with:
  14917.     STACK:    WORD    VIO handle (must be 00h)
  14918.         DWORD    pointer to cursor type record (see #0298)
  14919. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0299)
  14920. SeeAlso: #0310
  14921.  
  14922. (Table 0310)
  14923. Call VioScrollUp with:
  14924.     STACK:    WORD    VIO handle (must be 00h)
  14925.         DWORD    pointer to char/attr cell for filling emptied rows
  14926.         WORD    number or rows to scroll (FFFFh = clear area)
  14927.         WORD    right column of scroll area
  14928.         WORD    bottom row of scroll area
  14929.         WORD    left column of scroll area
  14930.         WORD    top row of scroll area
  14931. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  14932. SeeAlso: #0311,INT 10/AH=06h
  14933.  
  14934. (Table 0311)
  14935. Call VioScrollDn with:
  14936.     STACK:    WORD    VIO handle (must be 00h)
  14937.         DWORD    pointer to char/attr cell for filling emptied rows
  14938.         WORD    number or rows to scroll (FFFFh = clear area)
  14939.         WORD    right column of scroll area
  14940.         WORD    bottom row of scroll area
  14941.         WORD    left column of scroll area
  14942.         WORD    top row of scroll area
  14943. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  14944. SeeAlso: #0310,INT 10/AH=07h
  14945.  
  14946. (Table 0312)
  14947. Call VioReadCellStr with:
  14948.     STACK:    WORD    VIO handle (must be 00h)
  14949.         WORD    column at which to start reading
  14950.         WORD    row at which to start reading
  14951.         DWORD    pointer to WORD containing length of buffer in bytes
  14952.             on return, WORD contains number of bytes actually read
  14953.         DWORD    pointer to buffer for cell string
  14954. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0299)
  14955.  
  14956. (Table 0313)
  14957. Call VioReadCharStr with:
  14958.     STACK:    WORD    VIO handle (must be 00h)
  14959.         WORD    column at which to start reading
  14960.         WORD    row at which to start reading
  14961.         DWORD    pointer to WORD containing length of buffer in bytes
  14962.             on return, WORD contains number of bytes actually read
  14963.         DWORD    pointer to buffer for character string
  14964. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0299)
  14965.  
  14966. (Table 0314)
  14967. Call VioWrtCellStr with:
  14968.     STACK:    WORD    VIO handle (must be 00h)
  14969.         WORD    column at which to start writing
  14970.         WORD    row at which to start writing
  14971.         WORD    length of cell string in bytes
  14972.         DWORD    pointer to cell string to write
  14973. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  14974. Note:    write wraps at end of line and terminates if it reaches end of screen
  14975.  
  14976. (Table 0315)
  14977. Call VioWrtCharStr with:
  14978.     STACK:    WORD    VIO handle (must be 00h)
  14979.         WORD    column at which to start writing
  14980.         WORD    row at which to start writing
  14981.         WORD    length of character string
  14982.         DWORD    pointer to character string to write
  14983. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  14984. Note:    write wraps at end of line and terminates if it reaches end of screen
  14985.  
  14986. (Table 0316)
  14987. Call VioWrtCharStrAttr with:
  14988.     STACK:    WORD    VIO handle (must be 00h)
  14989.         DWORD    pointer to attribute to be applied to each character
  14990.         WORD    column at which to start writing
  14991.         WORD    row at which to start writing
  14992.         WORD    length of character string
  14993.         DWORD    pointer to character string to write
  14994. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  14995. Note:    write wraps at end of line and terminates if it reaches end of screen
  14996.  
  14997. (Table 0317)
  14998. Call VioWrtNAttr with:
  14999.     STACK:    WORD    VIO handle (must be 00h)
  15000.         WORD    column at which to start writing
  15001.         WORD    row at which to start writing
  15002.         WORD    number of times to write attribute
  15003.         DWORD    pointer to display attribute to replicate
  15004. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  15005. Note:    write wraps at end of line and terminates if it reaches end of screen
  15006.  
  15007. (Table 0318)
  15008. Call VioWrtNCell with:
  15009.     STACK:    WORD    VIO handle (must be 00h)
  15010.         WORD    column at which to start writing
  15011.         WORD    row at which to start writing
  15012.         WORD    number of times to write cell
  15013.         DWORD    pointer to cell to replicate
  15014. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  15015. Note:    write wraps at end of line and terminates if it reaches end of screen
  15016.  
  15017. (Table 0319)
  15018. Call VioWrtNChar with:
  15019.     STACK:    WORD    VIO handle (must be 00h)
  15020.         WORD    column at which to start writing
  15021.         WORD    row at which to start writing
  15022.         WORD    number of times to write character
  15023.         DWORD    pointer to character to replicate
  15024. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
  15025. Note:    write wraps at end of line and terminates if it reaches end of screen
  15026. --------V-148102-----------------------------
  15027. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  15028.     AX = 8102h
  15029. Return: AX = 1954h
  15030. Note:    terminates all operations; after this call, the video FOSSIL may either
  15031.       be removed from memory or reinitialized
  15032. SeeAlso: AX=8101h,AX=8103h
  15033. --------V-148103-----------------------------
  15034. INT 14 - VIDEO FOSSIL - UNINSTALL
  15035.     AX = 8103h
  15036. Return: AX = 1954h
  15037. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  15038. --------K-1482-------------------------------
  15039. INT 14 - KEYBOARD FOSSIL
  15040.     AH = 82h
  15041. SeeAlso: AH=7Eh
  15042. --------S-1482-------------------------------
  15043. INT 14 - COURIERS.COM - CONFIGURE PORT
  15044.     AH = 82h
  15045.     AL = port number (1-4)
  15046.     BX = speed (bps)
  15047.     CX = bit flags
  15048.         bit 0: enable input flow control
  15049.         bit 1: enable output flow control
  15050.         bit 2: use X.PC protocol (not yet implemented)
  15051. Return: nothing
  15052. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  15053. --------S-1482-------------------------------
  15054. INT 14 - COMM-DRV v14.0 - PORT CLEANUP
  15055.     AH = 82h
  15056.     DX = port number
  15057. Return: AH bit 7 set on error
  15058.     AH bit 7 clear if successful
  15059. Desc:    reset the port to its state before the AH=81h initialization and unhook
  15060.       any interrupts used by the port
  15061. SeeAlso: AH=81h"COMM-DRV",AH=83h"COMM-DRV"
  15062. ----------1483-------------------------------
  15063. INT 14 - SYSTEM FOSSIL
  15064.     AH = 83h
  15065. SeeAlso: AH=7Eh
  15066. --------S-1483-------------------------------
  15067. INT 14 - COURIERS.COM - START INPUT
  15068.     AH = 83h
  15069.     ES:BX -> circular input buffer
  15070.     CX = length of buffer
  15071.         (should be at least 128 bytes if input flow control enabled)
  15072. Return: nothing
  15073. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  15074. --------S-1483-------------------------------
  15075. INT 14 - COMM-DRV v14.0 - FLUSH COMMUNICATION BUFFERS
  15076.     AH = 83h
  15077.     DX = port number
  15078.     AL = subfunction
  15079.         00h flush input buffer
  15080.         01h flush output buffer
  15081.         02h flush both buffers
  15082. Return: AH bit 7 set on error
  15083.     AH bit 7 clear if successful
  15084. SeeAlso: AH=81h"COMM-DRV",AH=84h"COMM-DRV"
  15085. --------S-1484-------------------------------
  15086. INT 14 - COURIERS.COM - READ CHARACTER
  15087.     AH = 84h
  15088. Return: ZF set if no characters available
  15089.     ZF clear
  15090.        AL = character
  15091.        AH = modem status bits
  15092.         bit 7: set on input buffer overflow
  15093. SeeAlso: AH=02h,AH=86h,AH=89h
  15094. --------S-1484-------------------------------
  15095. INT 14 - COMM-DRV v14.0 - SEND PACKET
  15096.     AH = 84h
  15097.     CX = packet length in bytes
  15098.     DX = port number
  15099.     ES:DI -> packet to be sent
  15100. Return: AH = line status (see #0230)
  15101.         bit 7 set on error
  15102.     AL destroyed
  15103. SeeAlso: AH=83h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  15104. --------S-1485-------------------------------
  15105. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  15106.     AH = 85h
  15107. Return: nothing
  15108. SeeAlso: AH=0Ah,AH=88h"COURIERS"
  15109. --------S-1485-------------------------------
  15110. INT 14 - COMM-DRV v14.0 - RECEIVE PACKET
  15111.     AH = 85h
  15112.     CX = length of packet in bytes
  15113.     DX = port number
  15114.     ES:DI -> buffer for packet
  15115. Return: AH = line status (see #0230)
  15116.         bit 7 set on error
  15117.     AL destroyed
  15118. Note:    this call requires that at least the requested number of bytes are
  15119.       already present in the input buffer, and will fail if there are
  15120.       fewer bytes available
  15121. SeeAlso: AH=84h"COMM-DRV",AH=86h"COMM-DRV",AH=8Eh"COMM-DRV"
  15122. --------S-1486-------------------------------
  15123. INT 14 - COURIERS.COM - START OUTPUT
  15124.     AH = 86h
  15125.     ES:BX -> output buffer
  15126.     CX = length of output buffer
  15127. Return: nothing
  15128. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  15129. --------S-1486-------------------------------
  15130. INT 14 - COMM-DRV v14.0 - SET INPUT/OUTPUT TIMEOUTS
  15131.     AH = 86h
  15132.     BL = maximum clock ticks to wait before signalling error on input func
  15133.     BH = maximum clock ticks to wait before signalling error on output
  15134.     DX = port number
  15135.     SI = input timeout in clock ticks if BL=FFh and BH=FFh
  15136.     DI = output timeout in clock ticks if BL=FFh and BH=FFh
  15137. Return: AH bit 7 set on error
  15138.     AH bit 7 clear if successful
  15139. Note:    functions 02h, 85h, and 8Eh will wait for the input timeout before
  15140.       returning an error when no data is available; functions 01h and 84h
  15141.       will wait for the output timeout before returning an error if there
  15142.       is no space to output the data
  15143. SeeAlso: AH=01h,AH=02h,AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=8Eh"COMM-DRV"
  15144. --------S-1487-------------------------------
  15145. INT 14 - COURIERS.COM - OUTPUT STATUS
  15146.     AH = 87h
  15147. Return: AX = number of unsent characters
  15148. SeeAlso: AH=88h"COURIERS"
  15149. --------S-1487-------------------------------
  15150. INT 14 - COMM-DRV v14.0 - TURN ON DTR
  15151.     AH = 87h
  15152.     DX = port number
  15153. Return: AH bit 7 set on error
  15154.     AH bit 7 clear if successful
  15155. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  15156. --------S-1488-------------------------------
  15157. INT 14 - COURIERS.COM - ABORT OUTPUT
  15158.     AH = 88h
  15159. SeeAlso: AH=09h"FOSSIL",AH=85h"COURIERS"
  15160. --------S-1488-------------------------------
  15161. INT 14 - COMM-DRV v14.0 - TURN OFF DTR
  15162.     AH = 88h
  15163.     DX = port number
  15164. Return: AH bit 7 set on error
  15165.     AH bit 7 clear if successful
  15166. Program: COMM-DRV is a universal serial communications driver by Willies'
  15167.       Computer Software Company, which supports standard INT 14 and
  15168.       FOSSIL calls as well as its own interfaces
  15169. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  15170. --------S-1489-------------------------------
  15171. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  15172.     AH = 89h
  15173.     CL = character to send
  15174. Return: nothing
  15175. SeeAlso: AH=01h,AH=84h"COURIERS"
  15176. --------S-1489-------------------------------
  15177. INT 14 - COMM-DRV v14.0 - TURN ON RTS
  15178.     AH = 89h
  15179.     DX = port number
  15180. Return: AH bit 7 set on error
  15181.     AH bit 7 clear if successful
  15182. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  15183. --------S-148A-------------------------------
  15184. INT 14 - COURIERS.COM - SEND BREAK
  15185.     AH = 8Ah
  15186. Return: nothing
  15187. SeeAlso: AH=89h"COURIERS",AH=FAh
  15188. --------S-148A-------------------------------
  15189. INT 14 - COMM-DRV v14.0 - TURN OFF RTS
  15190.     AH = 8Ah
  15191.     DX = port number
  15192. Return: AH bit 7 set on error
  15193.     AH bit 7 clear if successful
  15194. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  15195. --------S-148B-------------------------------
  15196. INT 14 - COMM-DRV v14.0 - SET USER INTERRUPT ROUTINE
  15197.     AH = 8Bh
  15198.     CX = bitmask of interrupt to process
  15199.         00h = deinstall
  15200.     BX:DI -> DWORD containing address of function to be called
  15201. Return: AH bit 7 clear if successful
  15202.     AH bit 7 set on error
  15203. --------S-148C-------------------------------
  15204. INT 14 - COURIERS.COM - SET SPEED
  15205.     AH = 8Ch
  15206.     BX = speed in bps
  15207. Return: nothing
  15208. SeeAlso: AH=00h,AH=82h"COURIERS"
  15209. --------S-148C-------------------------------
  15210. INT 14 - COMM-DRV v14.0 - READ UART REGISTER
  15211.     AH = 8Ch
  15212.     AL = register offset
  15213.     DX = port number
  15214. Return: AH bit 7 set on error
  15215.     AH bit 7 clear if successful
  15216.         AL = contents of UART register
  15217. SeeAlso: AH=8Dh"COMM-DRV"
  15218. --------S-148D-------------------------------
  15219. INT 14 - COURIERS.COM - DECONFIGURE PORT
  15220.     AH = 8Dh
  15221. Return: nothing
  15222. SeeAlso: AH=82h"COURIERS"
  15223. --------S-148D-------------------------------
  15224. INT 14 - COMM-DRV v14.0 - WRITE UART REGISTER
  15225.     AH = 8Dh
  15226.     AL = register offset
  15227.     BL = new value for UART register
  15228.     DX = port number
  15229. Return: AH bit 7 set on error
  15230.     AH bit 7 clear if successful
  15231. SeeAlso: AH=8Ch"COMM-DRV"
  15232. --------S-148E-------------------------------
  15233. INT 14 - COMM-DRV v14.0 - READ PACKET NONDESTRUCTIVELY
  15234.     AH = 8Eh
  15235.     CX = length of packet in bytes
  15236.     DX = port number
  15237.     ES:DI -> buffer for packet
  15238. Return: AH = line status (see #0230)
  15239.         bit 7 set on error (see AX=8000h"COMM-DRV")
  15240.     AL destroyed
  15241. Program: COMM-DRV is a universal serial communications driver by Willies'
  15242.       Computer Software Company, which supports standard INT 14 and
  15243.       FOSSIL calls as well as its own interfaces
  15244. Desc:    retrieve a packet from the input buffer without removing it from the
  15245.       buffer
  15246. Note:    this call requires that at least the requested number of bytes are
  15247.       already present in the input buffer, and will fail if there are
  15248.       fewer bytes available
  15249. SeeAlso: AX=8000h"COMM-DRV",AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  15250. --------S-14A0-------------------------------
  15251. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  15252.     AH = A0h
  15253.     ES:BX -> ASCIZ internet host name
  15254.     CX = length of name
  15255. Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see #0320)
  15256.     CL = session ID
  15257. Program: the Bridge Application Program Interface is a set of functions which
  15258.       makes many of the details of LAN communications transparent
  15259. Note:    Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h
  15260. SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h
  15261.  
  15262. (Table 0320)
  15263. Values for 3com BAPI return code:
  15264.  00h    successful
  15265.  01h    no characters written
  15266.  02h    no characters read
  15267.  03h    no such session
  15268.  04h    clearinghouse name not found
  15269.  05h    no response from host
  15270.  06h    no more sessions available
  15271.  07h    session aborted
  15272.  08h    invalid clearinghouse name
  15273.  09h    not supported
  15274.  0Ah    internal (general) network error
  15275.  0Bh    out of memory
  15276.  0Ch    invalid IP address
  15277. --------S-14A0--CXFFFF-----------------------
  15278. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  15279.     AH = A0h
  15280.     CX = FFFFh
  15281. Return: CF clear if successful
  15282.         AX = 5445h ('TE')
  15283.         CX <> FFFFh
  15284.         DX = port number
  15285.     CF set on error
  15286. Program: TES is a network serial port emulation program
  15287. SeeAlso: AH=A1h"TES"
  15288. --------S-14A1-------------------------------
  15289. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  15290.     AH = A1h
  15291.     DH = session ID (00h for external session managment)
  15292. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0320)
  15293.     AL destroyed (Novell TELAPI.EXE)
  15294. SeeAlso: AH=A0h"BAPI"
  15295. --------S-14A1-------------------------------
  15296. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  15297.     AH = A1h
  15298. Return: CX = number of active sessions
  15299.     ES:SI -> status array (see #0321)
  15300. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  15301.  
  15302. Format of Interconnections TES status array entry:
  15303. Offset    Size    Description    (Table 0321)
  15304.  00h    BYTE    status
  15305.  01h    WORD    offset of name
  15306. --------S-14A2-------------------------------
  15307. INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
  15308.     AH = A2h
  15309.     AL = character
  15310.     DH = session ID (00h for external session managment)
  15311. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0320)
  15312. SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  15313. --------S-14A2-------------------------------
  15314. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  15315.     AH = A2h
  15316. Return: CX = number of servers
  15317.     ES:SI -> array of offsets from ES for server names
  15318. SeeAlso: AH=A1h"TES"
  15319. --------S-14A3-------------------------------
  15320. INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
  15321.     AH = A3h
  15322.     DH = session ID (00h for external session managment)
  15323. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0320)
  15324.     AL = character read or 00h if none available
  15325. SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI"
  15326. --------S-14A3-------------------------------
  15327. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  15328.     AH = A3h
  15329.     ES:SI -> ???
  15330. Return: CF clear if successful
  15331.         AX = 5445h ('TE')
  15332.         CX <> FFFFh
  15333.         DX = port number
  15334.     CF set on error
  15335. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  15336. --------S-14A4-------------------------------
  15337. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  15338.     AH = A4h
  15339.     CX = length of buffer in bytes
  15340.     DH = session ID (00h for external session managment)
  15341.     ES:BX -> buffer containing data
  15342. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0320)
  15343.     CX = number of bytes actually sent
  15344. SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI"
  15345. --------S-14A4-------------------------------
  15346. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  15347.     AH = A4h
  15348.     ???
  15349. Return: ???
  15350. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  15351. --------S-14A5-------------------------------
  15352. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  15353.     AH = A5h
  15354.     CX = length of buffer
  15355.     DH = session ID (00h for external session managment)
  15356.     ES:BX -> buffer for data
  15357. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0320)
  15358.     CX = number of bytes actually read
  15359. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  15360. SeeAlso: AH=A7h"BAPI",AX=FF02h
  15361. --------S-14A5-------------------------------
  15362. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  15363.     AH = A5h
  15364.     AL = session number
  15365. Return: ???
  15366. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  15367. --------S-14A6-------------------------------
  15368. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  15369.     AH = A6h
  15370.     DH = session ID (00h for external session managment)
  15371. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0320)
  15372. Desc:    generate a short break signal; if data delivery was turned off by the
  15373.       break, wait for the host to turn it on again
  15374. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
  15375. --------S-14A6-------------------------------
  15376. INT 14 - Interconnections Inc. TES - DROP A SESSION
  15377.     AH = A6h
  15378.     AL = session number
  15379. Return: AH = status
  15380.         00h successful
  15381.         else error
  15382. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  15383. --------S-14A7-------------------------------
  15384. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  15385.     AH = A7h
  15386.     DH = session ID (00h for external session managment)
  15387. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0320)
  15388.     CX = number of bytes available for reading
  15389. Note:    Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available
  15390. SeeAlso: AH=A5h"BAPI"
  15391. --------S-14A7-------------------------------
  15392. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  15393.     AH = A7h
  15394.     ???
  15395. Return: ???
  15396. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  15397. --------S-14A8-------------------------------
  15398. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  15399.     AH = A8h
  15400.     AL = 00h no visible response
  15401.     ES:SI -> ASCIZ command
  15402. Return: ???
  15403. --------N-14A8-------------------------------
  15404. INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION???
  15405.     AH = A8h
  15406.     DH = session ID???
  15407.     CH = subfunction
  15408.         02h ???
  15409.         0Dh ???
  15410.         0Fh ???
  15411.         10h ???
  15412.         11h ???
  15413.         28h ???
  15414.         else
  15415.         Return: AH = 09h (not supported)
  15416. Return: AH = return code (see #0320)
  15417.         00h successful
  15418.         CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h)
  15419.         CL = ??? (7Fh/FFh) (subfunction 28h)
  15420.         CX = ??? (subfunction 11h)
  15421. SeeAlso: AH=A9h"TelAPI"
  15422. --------N-14A9-------------------------------
  15423. INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL???
  15424.     AH = A9h
  15425.     DH = session ID???
  15426.     CH = subfunction
  15427.         02h ???
  15428.         0Dh ???
  15429.         0Fh ???
  15430.         10h ???
  15431.         11h ???
  15432.         28h ???
  15433.         else
  15434.         Return: AH = 09h (not supported)
  15435.     ???
  15436. Return: AH = return code (see #0320)
  15437.     ???
  15438. SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h
  15439. --------V-14AA01-----------------------------
  15440. INT 14 - DimVGA v2.0+ - INSTALLATION CHECK
  15441.     AX = AA01h
  15442. Return: AX = FFFFh if installed, unchanged
  15443.     BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h)
  15444.     CX = resident segment (v3.1+)
  15445. Program: DimVGA is a public domain screen saver by Menno Pieters
  15446. SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0225h/BX=6900h,INT 12"KEYBUI"
  15447. SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h
  15448. SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h
  15449. SeeAlso: INT 2F/AX=E300h
  15450. Index:    screen saver;DimVGA
  15451. --------V-14AA02-----------------------------
  15452. INT 14 - DimVGA v2.0+ - SET TIME-OUT (DIMMING/BLANKING) PERIOD
  15453.     AX = AA02h
  15454.     BX = number of clock ticks
  15455. Return: AX = FFFFh
  15456. Note:    on screen modes with 256 or less colors DimVGA will dim the screen,
  15457.       when more than 256 colors can be used DimVGA will blank the screen.
  15458. SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h
  15459. Index:    screen saver;DimVGA
  15460. --------V-14AA03-----------------------------
  15461. INT 14 - DimVGA v2.0+ - SET DIMMING FACTOR
  15462.     AX = AA03h
  15463.     BX = percentage remaining visible (1-99)
  15464. Return: AX = FFFFh
  15465. SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h
  15466. Index:    screen saver;DimVGA
  15467. --------V-14AA04-----------------------------
  15468. INT 14 - DimVGA v2.0+ - GET TIME-OUT PERIOD
  15469.     AX = AA04h
  15470. Return: AX = FFFFh
  15471.     BX = current time-out in clock ticks
  15472. SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah
  15473. Index:    screen saver;DimVGA
  15474. --------V-14AA05-----------------------------
  15475. INT 14 - DimVGA v2.0+ - GET DIMMING FACTOR
  15476.     AX = AA05h
  15477. Return: AX = FFFFh
  15478.     BX = current dimming factor
  15479. SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah
  15480. Index:    screen saver;DimVGA
  15481. --------V-14AA06-----------------------------
  15482. INT 14 - DimVGA v2.0+ - DISABLE
  15483.     AX = AA06h
  15484. Return: AX = FFFFh
  15485. SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah
  15486. Index:    screen saver;DimVGA
  15487. --------V-14AA07-----------------------------
  15488. INT 14 - DimVGA v2.0+ - ENABLE
  15489.     AX = AA07h
  15490. Return: AX = FFFFh
  15491. SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah
  15492. Index:    screen saver;DimVGA
  15493. --------V-14AA08-----------------------------
  15494. INT 14 - DimVGA v2.0+ - DIM SCREEN 'MANUALLY'
  15495.     AX = AA08h
  15496. Return: AX = FFFFh
  15497. Note:    this function will dim the screen immediately, even if DimVGA is
  15498.       currently disabled
  15499. SeeAlso: AX=AA01h,AX=AA02h,AX=AA09h
  15500. Index:    screen saver;DimVGA
  15501. --------V-14AA09-----------------------------
  15502. INT 14 - DimVGA v2.0+ - UNDIM SCREEN 'MANUALLY'
  15503.     AX = AA09h
  15504. Return: AX = FFFFh
  15505. Note:    this function will undim the screen immediately, even if DimVGA is
  15506.       currently disabled
  15507. SeeAlso: AX=AA01h,AX=AA08h
  15508. Index:    screen saver;DimVGA
  15509. --------V-14AA0A-----------------------------
  15510. INT 14 - DimVGA v2.0+ - CHECK WHETHER ENABLED
  15511.     AX = AA0Ah
  15512. Return: AX = FFFFh
  15513.     BX = current state (0000h disabled, 0001h enabled)
  15514. SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h
  15515. Index:    screen saver;DimVGA
  15516. --------V-14AA0B-----------------------------
  15517. INT 14 - DimVGA v2.1+ - SET HOTKEY
  15518.     AX = AA0Bh
  15519.     BH = shift state (see #0322)
  15520.     BL = keyboard scancode
  15521. Return: AX = FFFFh
  15522. SeeAlso: AX=AA01h,AX=AA0Ch
  15523. Index:    screen saver;DimVGA
  15524.  
  15525. Bitfields for DimVGA hotkey shift state:
  15526. Bit(s)    Description    (Table 0322)
  15527.  7-4    unused
  15528.  3    Alt key pressed
  15529.  2    Ctrl key pressed
  15530.  1    Left shift key pressed
  15531.  0    Right shift key pressed
  15532. --------V-14AA0C-----------------------------
  15533. INT 14 - DimVGA v2.1+ - GET HOTKEY
  15534.     AX = AA0Ch
  15535. Return: AX = FFFFh
  15536.     BH = shift state (see #0322)
  15537.     BL = keyboard scancode
  15538. SeeAlso: AX=AA01h,AX=AA0Bh
  15539. Index:    screen saver;DimVGA
  15540. --------V-14AA0D-----------------------------
  15541. INT 14 - DimVGA v3.0+ - SET MOUSE CHECK STATUS
  15542.     AX = AA0Dh
  15543.     BX = new mouse check status
  15544.         0000h mouse checking off
  15545.         0001h mouse checking on
  15546. Return: AX = FFFFh
  15547. Note:    before switching mouse checking on, a mouse driver should be
  15548.       found in memory. If no mouse driver is found, mouse checking
  15549.       should be switched off (resident DimVGA does not check by itself).
  15550. SeeAlso: AX=AA01h,AX=AA0Eh
  15551. Index:    screen saver;DimVGA
  15552. --------V-14AA0E-----------------------------
  15553. INT 14 - DimVGA v3.0+ - GET MOUSE CHECK STATUS
  15554.     AX = AA0Eh
  15555. Return: BX = mouse check status (0000h disabled, 0001h enabled)
  15556. SeeAlso: AX=AA01h,AX=AA0Dh
  15557. Index:    screen saver;DimVGA
  15558. --------V-14AA0F-----------------------------
  15559. INT 14 - DimVGA v3.4 - SET LOCKING STATUS
  15560.     AX = AA0Fh
  15561.     BX = locking status
  15562.         0000h disabled
  15563.         0001h enabled
  15564. Return: AX = FFFFh
  15565. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA10h
  15566. Index:    screen saver;DimVGA
  15567. --------V-14AA10-----------------------------
  15568. INT 14 - DimVGA v3.4 - GET MOUSE CHECK STATUS
  15569.     AX = AA10h
  15570. Return: BX = locking status (0000h disabled, 0001h enabled)
  15571. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA0Fh
  15572. Index:    screen saver;DimVGA
  15573. ----------14AD-------------------------------
  15574. INT 14 - IBM SurePath BIOS - Officially "Private" Function
  15575.     AH = ADh
  15576. SeeAlso: AH=AEh"IBM",AH=AFh"IBM"
  15577. ----------14AE-------------------------------
  15578. INT 14 - IBM SurePath BIOS - Officially "Private" Function
  15579.     AH = AEh
  15580. SeeAlso: AH=ADh"IBM",AH=AFh"IBM"
  15581. ----------14AF-------------------------------
  15582. INT 14 - IBM SurePath BIOS - Officially "Private" Function
  15583.     AH = AFh
  15584. SeeAlso: AH=ADh"IBM",AH=AEh"IBM"
  15585. --------S-14AF00BXAAAA-----------------------
  15586. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  15587.     AX = AF00h
  15588.     BX = AAAAh
  15589. Return: AX = AF01h if installed
  15590.         BH = protocol type (if BX=AAAAh on entry)
  15591.         01h NetManage TCP/IP
  15592.         BL = version for protocol type (if BX=AAAAh on entry)
  15593. Note:    early versions of the BAPI and the ROM BIOS simply destroy AX; this
  15594.       behavior is used to determine whether the newer functions (AH=B0h,
  15595.       AH=B1h,etc) are available
  15596. SeeAlso: AH=A0h"BAPI"
  15597. --------S-14B0-------------------------------
  15598. INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER
  15599.     AH = B0h
  15600.     AL = new state (00h disabled, 01h enabled)
  15601. Return: AH = return code (00h,07h,0Ah) (see #0320)
  15602. Note:    disabling the ECM character allows applications to send data which
  15603.       includes the ECM character
  15604. SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h
  15605. --------S-14B1-------------------------------
  15606. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  15607.     AH = B1h
  15608. Return: AH = return code (00h,07h,0Ah) (see #0320)
  15609. Desc:    provide a means for the application or terminal emulator to perform
  15610.       the same action normally caused by the ECM character
  15611. SeeAlso: AH=B0h,AH=B2h
  15612. --------S-14B2-------------------------------
  15613. INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE
  15614.     AH = B2h
  15615. Return: AH = return code (00h,07h,0Ah) (see #0320)
  15616.     AL = watch flag (00h disabled, 01h enabled)
  15617. Desc:    determine whether the ECM character is enabled
  15618. SeeAlso: AH=B0h,AH=B1h
  15619. --------S-14B3-------------------------------
  15620. INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO
  15621.     AH = B3h
  15622.     AL = direction (00h get, 01h set)
  15623.     DH = session ID (00h for external session managment)
  15624.     DL = configuration item (00h = end-of-line mapping)
  15625.     CX = new configuration item value (if AL=01h)
  15626.         ---if DL=00h---
  15627.         CH = application EOL type (app to Telnet client)
  15628.         01h application will send lone CR
  15629.         02h application will send CR-? pair
  15630.         CL = driver EOL type (Telnet client to Telnet server)
  15631.         01h driver should send CR-NUL pair
  15632.         02h driver should send CR-LF pair
  15633. Return: AH = return code (00h,03h,09h-0Bh) (see #0320)
  15634.     ---if AL=00h---
  15635.     CX = configuration item value (above)
  15636. SeeAlso: AH=B2h
  15637. --------N-14E0-------------------------------
  15638. INT 14 - TelAPI - "telopen" - CREATE TELNET CONNECTION (BLOCKING)
  15639.     AH = E0h
  15640.     BX = port number to connect with (default 0017h used if <= 0)
  15641.     CX:DX = Internet address of remote host
  15642.     DS:DI -> 2-byte remote host (session) identifier
  15643.     ES:SI -> 1700-byte buffer for Telnet state record
  15644.         0000h:0000h to use TelAPI internally-allocated space
  15645. Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #0323)
  15646.     ES:SI buffer filled with state record
  15647.     ES:SI -> internally-allocated state record in some versions
  15648. Note:    the remote host identifier may be used to refer to this connection
  15649. SeeAlso: AH=E1h,AH=ECh,AX=FF00h
  15650.  
  15651. (Table 0323)
  15652. Values for TelAPI status:
  15653.  0000h-7FFFh    successful (session number)
  15654.  FED3h    (-301)    no session allocated, or out of TelAPI data space
  15655.  FF37h    (-201)    all sessions in use
  15656.  FFBDh    (-67)    unknown hostname
  15657.  FFC0h    (-64)    host not functioning
  15658.  FFC3h    (-61)    connection attempt refused
  15659.  FFC4h    (-60)    connection attempt timed out
  15660.  FFC8h    (-56)    socket already connected
  15661.  FFCDh    (-51)    network is unreachable
  15662.  FFDDh    (-35)    operation would block
  15663. --------S-14E000-----------------------------
  15664. INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK
  15665.     AX = E000h
  15666.     DX = port number (0-3)
  15667. Return: ES:BX -> status block (see #0324)
  15668. Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and
  15669.       ships with the MTEZ terminal program as MTEMNP.DRV (a TSR despite
  15670.       the .DRV extension)
  15671. SeeAlso: AX=E006h
  15672.  
  15673. Format of MX5 Extended FOSSIL status block:
  15674. Offset    Size    Description    (Table 0324)
  15675.  00h    BYTE    flag: active (00h no, 01h yes)
  15676.  01h    BYTE    MNP level (2,4,5)
  15677.  02h    BYTE    series ID from remote MNP
  15678.  03h    DWORD    total packets transmitted
  15679.  07h    DWORD    duplicate packets transmitted
  15680.  0Bh    DWORD    maximum speed
  15681.  0Fh    DWORD    total packets received
  15682.  13h    DWORD    duplicate packets received
  15683.  17h    DWORD    maximum speed
  15684. --------S-14E001-----------------------------
  15685. INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL
  15686.     AX = E001h
  15687.     BH = function
  15688.         00h get MNP level
  15689.         01h set MNP level
  15690.         BL = new level (00h none, 02h/04h/05h MNP level N)
  15691.     DX = port number (0-3)
  15692. Return: BL = MNP level
  15693. SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h
  15694. --------S-14E002-----------------------------
  15695. INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE
  15696.     AX = E002h
  15697.     BH = function
  15698.         00h get answer/originate mode
  15699.         01h set mode
  15700.         BL = new mode (00h originate [default], 01h answer)
  15701.     DX = port number (0-3)
  15702. Return: BL = answer/originate mode
  15703. SeeAlso: AX=E001h,AX=E003h,AX=E006h
  15704. --------S-14E003-----------------------------
  15705. INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS
  15706.     AX = E003h
  15707.     BH = function
  15708.         00h get wait ticks
  15709.         01h set wait ticks
  15710.         BL = MNP wait ticks (default 0Eh)
  15711.     DX = port number (0-3)
  15712. Return: BL = wait ticks
  15713. SeeAlso: AX=E001h,AX=E002h,AX=E006h
  15714. --------S-14E004-----------------------------
  15715. INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL
  15716.     AX = E004h
  15717.     BH = function
  15718.         00h get sound level
  15719.         01h set sound level
  15720.         BL = new sound level (00h off, 01h on [default])
  15721.     DX = port number
  15722. Return: BL = sound state
  15723. Desc:    specify whether MX5 should generate beeps after an MNP connection
  15724.       (three high beeps if successful, high then low on connection failure)
  15725. SeeAlso: AX=E002h,AX=E006h
  15726. --------S-14E005-----------------------------
  15727. INT 14 - MX5 Extended FOSSIL - UNINSTALL
  15728.     AX = E005h
  15729. Return: BX = segment of MX5's memory block or 0000h on failure
  15730. Note:    caller must free the returned memory block to complete the uninstall
  15731. SeeAlso: AX=E006h
  15732. --------S-14E006BX0000-----------------------
  15733. INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK
  15734.     AX = E006h
  15735.     BX = 0000h
  15736. Return: BX = 4D58h ('MX') if installed
  15737.         AH = major version
  15738.         AL = minor version
  15739. SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h
  15740. --------S-14E007-----------------------------
  15741. INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS
  15742.     AX = E007h
  15743.     CX = number of ticks to wait
  15744. Return: nothing
  15745. SeeAlso: AX=E006h
  15746. --------N-14E1-------------------------------
  15747. INT 14 - TelAPI - "telclose" - TERMINATE TELNET CONNECTION
  15748.     AH = E1h
  15749.     BX = connection ID
  15750. Return: AX = status (0000h,FFF7h,maybe others) (see #0323)
  15751. Note:    flushes and releases all buffers and data space used by the connection
  15752. SeeAlso: AH=E0h,AH=E6h,AX=FF00h
  15753. --------N-14E2-------------------------------
  15754. INT 14 - TelAPI - "telread" - BUFFERED READ
  15755.     AH = E2h
  15756.     BX = connection ID (see AH=E0h"TelAPI")
  15757.     CX = length of buffer in bytes
  15758.     ES:SI -> buffer for data
  15759. Return: AX > 0000h number of characters actually read
  15760.     AX = 0000h host has closed connection
  15761.     AX < 0000h error code (see #0323)
  15762. Note:    translates CRLF into local EOL if the connection is in ASCII mode,
  15763.       negotiates various Telnet options, and immediately executes several
  15764.       different Telnet action commands
  15765. SeeAlso: AH=07h"TelAPI",AH=E3h,AH=E6h,AX=FF00h,INT 6B/AH=01h
  15766. --------N-14E3-------------------------------
  15767. INT 14 - TelAPI - "telwrite" - BUFFERED WRITE
  15768.     AH = E3h
  15769.     BX = connection ID
  15770.     CX = length of buffer in bytes
  15771.     ES:SI -> buffer containing data
  15772. Return: AX > 0000h number of characters actually written
  15773.     AX < 0000h error code (see #0323)
  15774. Note:    translates local EOL into CRLF if the connection is in ASCII mode,
  15775.       sends the appropriate Telnet commands for the characters selected
  15776.       for IP, AYT, AO, EC, EL, and Break
  15777. SeeAlso: AH=06h"TelAPI",AH=E2h,AH=E6h,AX=FF00h,INT 6B/AH=00h
  15778. --------N-14E4-------------------------------
  15779. INT 14 - TelAPI - "telioctl" - CONNECTION CONTROL
  15780.     AH = E4h
  15781.     BX = connection ID (see AH=E0h"TelAPI")
  15782.     CX = Telnet command/option identifier (see #0326)
  15783.     ES:SI -> buffer containing command/option argument (see #0325)
  15784. Return: AX = status (0000h, etc.) (see #0323)
  15785. Desc:    start filter control, initiate Telnet option negotiation, or get filter
  15786.       control status
  15787. SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h
  15788.  
  15789. Format of TelAPI Telnet command/option argument:
  15790. Offset    Size    Description    (Table 0325)
  15791.  00h  5 WORD    numeric arguments
  15792.  0Ah    DWORD    -> ASCIZ string
  15793. SeeAlso: #0326
  15794.  
  15795. (Table 0326)
  15796. Values for TelAPI Telnet command/option identifier:
  15797.  01h    ASCII        args: none
  15798.  02h    BINARY        args: none
  15799.  03h    LOCALECHO    args: none        client echos data
  15800.  04h    REMOTEECHO    args: none        server echos data
  15801.  05h    SGA        args: none        Suppress Go-Ahead signal
  15802.  07h    CHARMODE    args: none        no line-buffering
  15803.  08h    LINEMODE    args: -> erase-line ch    perform line-buffering
  15804.  09h    RECVEOL        args: EOL type
  15805.  0Ah    SENDEOL        args: EOL type
  15806.  0Bh    EOR        args: none        enable end-of-record sequence
  15807.  0Dh    BREAK        args: -> break char
  15808.  0Eh    VERBOSE        args: verbosity        display Telnet negotiations?
  15809.  0Fh    AYT        args: -> AYT escape ch
  15810.  10h    AO        args: -> AO escape char
  15811.  11h    IP        args: -> IP escape char
  15812.  12h    EC        args: -> escape char
  15813.  13h    EL        args: -> escape char
  15814.  14h    STATUS        args: type; returns data in structure
  15815.  18h    TERMTYPE    args: -> terminal type
  15816.  19h    ATTACHPORT    args: port number ; returns session number
  15817.  1Bh    TRANSMIT_EOR    args: EOR enabled    append EOR to every telwrite?
  15818. SeeAlso: #0325
  15819. --------N-14E5-------------------------------
  15820. INT 14 - TelAPI - "telreset" - RESET ALL CONNECTIONS
  15821.     AH = E5h
  15822. Return: AX = status (0000h,other) (see also #0323)
  15823.         FFFFh unable to reset
  15824. Desc:    close all sessions and reset TelAPI to defaults
  15825. SeeAlso: AH=E1h,AH=E6h,AX=FF00h
  15826. --------N-14E6-------------------------------
  15827. INT 14 - TelAPI - "telunload" - UNINSTALL
  15828.     AH = E6h
  15829. Return: AX = status
  15830.         0000h successful
  15831.         FFFFh unable to uninstall
  15832. Notes:    TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B
  15833.     this function invokes AH=E5h internally
  15834. SeeAlso: AH=E5h,AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h
  15835. --------N-14E7-------------------------------
  15836. INT 14 - TelAPI - "tellist" - GET TELNET SESSION LIST
  15837.     AH = E7h
  15838.     ES:SI -> 10-word buffer for session list
  15839. Return: AX = 0000h (successful)
  15840.     ES:SI buffer filled
  15841. Desc:    determine, for each of the ten allowable sessions, whether the session
  15842.       is currently available
  15843. Note:    each word in the buffer is filled with either 0000h to indicate that
  15844.      the corresponding sesion is unavailable, or 0001h if available
  15845. SeeAlso: AH=E0h,AH=E5h,AX=FF00h
  15846. --------N-14E8-------------------------------
  15847. INT 14 - TelAPI - "telattach" - ATTACH COM PORT TO/FROM TELNET SESSION
  15848.     AH = E8h
  15849.     BX = connection ID (see AH=E0h"TelAPI")
  15850.     CX = serial port number (0000h-0003h = COM1-COM4)
  15851. Return: AX = status
  15852.         0000h successful
  15853.         FFFFh failed
  15854. SeeAlso: AH=E0h,AH=E9h,AX=FF00h
  15855. --------N-14E9-------------------------------
  15856. INT 14 - TelAPI - "telportosn" - GET SESSION NUMBER FOR COM PORT
  15857.     AH = E9h
  15858.     DX = serial port number (0000h-0003h = COM1-COM4)
  15859. Return: AX >= 0000h session number
  15860.     AX < 0000h error code (see #0323)
  15861. SeeAlso: AH=E0h,AH=E8h,AH=EAh,AX=FF00h
  15862. --------N-14EA-------------------------------
  15863. INT 14 - TelAPI - "telstatus" - GET TELNET CONNECTION STATUS INFORMATION
  15864.     AH = EAh
  15865.     BX = connection ID (see AH=E0h"TelAPI")
  15866.     ES:SI -> buffer for status info (see #0327)
  15867. Return: AX = status (0000h,FFFFh,etc.)
  15868. SeeAlso: AH=E9h,AH=EBh,AX=FF00h
  15869.  
  15870. Format of TelAPI Telnet connection status information:
  15871. Offset    Size    Description    (Table 0327)
  15872.  00h  4 BYTEs    remote host IP address
  15873.  04h 20 BYTEs    reserved
  15874.  18h    WORD    local port number
  15875.  1Ah    BYTE    connection mode (00h = ASCII, 01h = Binary)
  15876.  1Bh    BYTE    echo flag (00h local, 01h remote)
  15877.  1Ch    BYTE    SGA flag (00h will, 01h won't)
  15878.  1Dh    BYTE    EOR negotation flag (00h do negotiate, 01h don't)
  15879.  1Eh    BYTE    buffering (00h line mode, 01h character mode)
  15880.  1Fh    BYTE    reserved
  15881.  20h    BYTE    verbose flag (00h no, 01h verbose mode)
  15882.  21h    BYTE    received EOL (00h no xlat, 01h CR, 02h LF, 03h CRLF)
  15883.  22h    BYTE    sent EOL (00h no translation, 01h CR, 02h LF)
  15884.  23h    BYTE    break character
  15885.  24h    BYTE    IP escape character
  15886.  25h    BYTE    AO escape character
  15887.  26h    BYTE    AYT escape character
  15888.  27h    BYTE    EC escape character
  15889.  28h    BYTE    EL escape character
  15890.  29h 41 BYTEs    ASCIZ Telnet-negotiated terminal type
  15891.  52h  9 BYTEs    session ID
  15892. SeeAlso: #0328
  15893. --------N-14EB-------------------------------
  15894. INT 14 - TelAPI - "telname" - GET AVAILABLE/INUSE STATUS FOR ALL SESSIONS
  15895.     AH = EBh
  15896.     ES:SI -> buffer for session statuses (see #0328)
  15897. Return: ES:SI buffer filled
  15898. SeeAlso: AH=E9h,AH=EAh,AX=FF00h
  15899.  
  15900. Format of TelAPI session status information [array]:
  15901. Offset    Size    Description    (Table 0328)
  15902.  00h    BYTE    session state (00h available, 01h connected)
  15903.  01h  9 BYTEs    session ID if connected
  15904.  0Ah    WORD    attached COM port if connected, FFFFh if not
  15905. SeeAlso: #0327
  15906. --------N-14EC-------------------------------
  15907. INT 14 - TelAPI - "telnblkopen" - CREATE TELNET CONNECTION (NON-BLOCKING)
  15908.     AH = ECh
  15909.     BX = port number to connect with (default 0017h used if <= 0)
  15910.     CX:DX = Internet address of remote host
  15911.     DS:DI -> 2-byte remote host (connection) identifier
  15912.     ES:SI -> 1700-byte buffer for Telnet state record
  15913.         0000h:0000h to use TelAPI internally-allocated space
  15914. Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #0323)
  15915.     ES:SI buffer filled with state record
  15916.     ES:SI -> internally-allocated state record in some versions
  15917. Notes:    the remote host identifier may be used to refer to this connection
  15918.     this function returns immediately; use AH=EDh to check whether the
  15919.       connection has been established yet
  15920.     this function is not supported by the Microdyne TelAPI v3.7
  15921. SeeAlso: AH=E0h"TelAPI",AH=EDh,AX=FF00h
  15922. --------N-14ED-------------------------------
  15923. INT 14 - TelAPI - "telpoll" - POLL TELNET SESSION FOR CONNECTION COMPLETION
  15924.     AH = EDh
  15925.     BX = connection ID (see AH=ECh)
  15926. Return: AX = status (0000h,0001h,FFFFh,etc.) (see also #0323)
  15927.         0000h session now connected
  15928.         0001h connection still in progress
  15929. Note:    this function is not supported by the Microdyne TelAPI v3.7
  15930. SeeAlso: AH=EDh,AX=FF00h
  15931. --------a-14F0F0-----------------------------
  15932. INT 14 - ASAP v1.0 - ???
  15933.     AX = F0F0h
  15934.     DX = ???
  15935.     ???
  15936. Return: ???
  15937. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
  15938.       by MicroTalk
  15939. SeeAlso: AX=F0F1h
  15940. --------a-14F0F1DX0000-----------------------
  15941. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  15942.     AX = F0F1h
  15943.     DX = 0000h
  15944. Return: DX = segment of resident code
  15945.         0000h if not installed
  15946. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
  15947.       by MicroTalk
  15948. SeeAlso: AX=F0F0h,INT 10/AX=3800h
  15949. --------S-14F4FF-----------------------------
  15950. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  15951.     AX = F4FFh
  15952.     DX = port (00h-03h)
  15953. Return: CF clear if present
  15954.         AX = 0000h
  15955.     CF set if not present
  15956.         AX <> 0000h
  15957. SeeAlso: AH=36h"ComShare",AH=F9h,AH=FCh
  15958. --------S-14F9-------------------------------
  15959. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  15960.     AH = F9h
  15961.     DX = port (00h-03h)
  15962. Return: nothing
  15963. SeeAlso: AX=F4FFh
  15964. --------S-14FA-------------------------------
  15965. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  15966.     AH = FAh
  15967.     DX = port (00h-03h)
  15968. Return: nothing
  15969. SeeAlso: AH=07h"MBBIOS",AH=1Ah,AH=8Ah
  15970. --------S-14FB-------------------------------
  15971. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  15972.     AH = FBh
  15973.     AL = modem control register (see #0260 at AH=05h"SERIAL")
  15974.     DX = port (00h-03h)
  15975. Return: nothing
  15976. SeeAlso: AH=05h"SERIAL"
  15977. --------S-14FC-------------------------------
  15978. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  15979.     AH = FCh
  15980.     DX = port (00h-03h)
  15981. Return: AH = RS232 status bits (see #0230 at AH=03h)
  15982.     AL = character
  15983. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  15984. --------S-14FD02-----------------------------
  15985. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  15986.     AX = FD02h
  15987. Return: CX = number of characters available
  15988. --------N-14FF00-----------------------------
  15989. INT 14 - TelAPI - "telcheck" - INSTALLATION CHECK
  15990.     AX = FF00h
  15991. Return: AX = 00FFh if installed
  15992.         BX = version number * 100 (decimal)
  15993. SeeAlso: AH=E6h,AX=F4FFh
  15994. --------S-14FF01-----------------------------
  15995. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER
  15996.     AX = FF01h
  15997.     CX = length of buffer (0000h to cancel buffer assignment)
  15998.     DX = port (00h-03h)
  15999.     ES:BX -> send buffer
  16000. Return: nothing
  16001. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h
  16002. --------S-14FF02-----------------------------
  16003. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER
  16004.     AX = FF02h
  16005.     CX = length of buffer (0000h to cancel buffer assignment)
  16006.     DX = port (00h-03h)
  16007.     ES:BX -> receive buffer
  16008. Return: nothing
  16009. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF01h
  16010. --------S-14FFF8-----------------------------
  16011. INT 14 - COMM-DRV v14.0 - SET BAUD RATE DIVISOR
  16012.     AX = FFF8h
  16013.     BX = card type (sub-device number)
  16014.     CX = new baudrate divisor
  16015.     DX = index to baud rate
  16016. Return: AH bit 7 set on error
  16017.     AH bit 7 clear if successful
  16018. Program: COMM-DRV is a universal serial communications driver by Willies'
  16019.       Computer Software Company, which supports standard INT 14 and
  16020.       FOSSIL calls as well as its own interfaces
  16021. SeeAlso: AX=8000h"COMM-DRV"
  16022. --------S-14FFFB-----------------------------
  16023. INT 14 - COMM-DRV v14.0 - GET HIGHEST ALLOWED PORT NUMBER
  16024.     AX = FFFBh
  16025.     DX = port number
  16026. Return: AH bit 7 set on error
  16027.     AH bit 7 clear if successful
  16028.         BX = highest port number
  16029. --------S-14FFFC-----------------------------
  16030. INT 14 - COMM-DRV v14.0 - GET INT 14 FLAGS
  16031.     AX = FFFCh
  16032.     DX = port number
  16033. Return: AH bit 7 set on error
  16034.     AH bit 7 clear if successful
  16035.         BX = flags (see #0329)
  16036. SeeAlso: AX=FFFDh
  16037.  
  16038. Bitfields for INT 14h flags:
  16039. Bit(s)    Description    (Table 0329)
  16040.  0    port active for INT 14h
  16041.  1    interface behaving like a FOSSIL driver
  16042. --------S-14FFFD-----------------------------
  16043. INT 14 - COMM-DRV v14.0 - SET INT 14 FLAGS
  16044.     AX = FFFDh
  16045.     BX = flags (see #0329)
  16046.     DX = port number
  16047. Return: AH bit 7 set on error
  16048.     AH bit 7 clear if successful
  16049. SeeAlso: AX=FFFCh
  16050. --------S-14FFFE-----------------------------
  16051. INT 14 - COMM-DRV v14.0 - RESTORE INT 14 VECTOR TO ORIGINAL
  16052.     AX = FFFEh
  16053. Return: AH bit 7 set on error
  16054.     AH bit 7 clear if successful
  16055. --------S-14FFFF-----------------------------
  16056. INT 14 - COMM-DRV v14.0 - GET INT 14 INFORMATION AREA
  16057.     AX = FFFFh
  16058.     BX:SI -> DWORD buffer for address of information area (see #0330)
  16059.           (initialized to zeros)
  16060. Return: BX:SI buffer filled with nonzero value if installed
  16061. Program: COMM-DRV is a universal serial communications driver by Willies'
  16062.       Computer Software Company, which supports standard INT 14 and
  16063.       FOSSIL calls as well as its own interfaces
  16064. Index:    installation check;COMM-DRV
  16065.  
  16066. Format of COMM-DRV information area:
  16067. Offset    Size    Description    (Table 0330)
  16068.  00h  8 BYTEs    signature "COMM-DRV"
  16069.  08h  2 BYTEs    00h,00h
  16070.  0Ah    DWORD    -> direct address mapping table
  16071.  0Eh    DWORD    previous INT 14 vector
  16072. --------t-15---------------------------------
  16073. INT 15 - Microsoft TSR Specification
  16074.     No additional information available at this time.
  16075. --------B-1500-------------------------------
  16076. INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
  16077.     AH = 00h
  16078. Return: CF set on error
  16079.         AH = 86h no cassette present
  16080.     CF clear if successful
  16081. SeeAlso: AH=01h"CASSETTE",MEM 0040h:0067h"PC"
  16082. --------M-1500-------------------------------
  16083. INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
  16084.     AH = 00h
  16085. Return: CX = signed X count
  16086.     DX = signed Y count
  16087. --------O-1500-------------------------------
  16088. INT 15 - VMiX v2+ - INSTALLATION CHECK
  16089.     AH = 00h
  16090. Return: DX = 0798h if installed
  16091.         AX = version (AH = major, AL = minor)
  16092. --------T-1500-------------------------------
  16093. INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
  16094.     AH = 00h
  16095. Return: nothing
  16096. Note:    if issued by the highest-priority task while MultiDOS is using
  16097.       priority-based rather than round-robin scheduling, control will be
  16098.       returned to the caller immediately
  16099. SeeAlso: AH=03h"MultiDOS",AX=1000h
  16100. --------B-1501-------------------------------
  16101. INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
  16102.     AH = 01h
  16103. Return: CF set on error
  16104.         AH = 86h no cassette present
  16105.     CF clear if successful
  16106. SeeAlso: AH=00h"CASSETTE"
  16107. --------b-1501-------------------------------
  16108. INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
  16109.     AH = 01h
  16110.     AL = NVRAM location (00h to 3Fh) (see #0331)
  16111.     BL = NVRAM data value
  16112. Return: AH = return code
  16113.         00h OK
  16114.         01h address bad
  16115.         02h write error
  16116. SeeAlso: AH=02h"Amstrad"
  16117.  
  16118. Format of Amstrad NVRAM:
  16119. Offset    Size    Description    (Table 0331)
  16120.  00h    BYTE    time of day: seconds
  16121.  01h    BYTE    alarm time: seconds
  16122.  02h    BYTE    time of day: minutes
  16123.  03h    BYTE    alarm time: minutes
  16124.  04h    BYTE    time of day: hours
  16125.  05h    BYTE    alarm time: hours
  16126.  06h    BYTE    day of week, 1 = Sunday
  16127.  07h    BYTE    day of month
  16128.  08h    BYTE    month
  16129.  09h    BYTE    year mod 100
  16130.  0Ah    BYTE    RTC status register A (see #0332)
  16131.  0Bh    BYTE    RTC status register B (see #0333)
  16132.  0Ch    BYTE    RTC status register C (read-only) (see #0334)
  16133.  0Dh    BYTE    RTC status register D
  16134.         bit 7: battery good
  16135.  0Eh  6 BYTEs    time and date machine last used
  16136.  14h    BYTE    user RAM checksum
  16137.  15h    WORD    Enter key scancode/ASCII code
  16138.  17h    WORD    Forward delete key scancode/ASCII code
  16139.  19h    WORD    Joystick fire button 1 scancode/ASCII code
  16140.  1Bh    WORD    Joystick fire button 2 scancode/ASCII code
  16141.  1Dh    WORD    mouse button 1 scancode/ASCII code
  16142.  1Fh    WORD    mouse button 2 scancode/ASCII code
  16143.  21h    BYTE    mouse X scaling factor
  16144.  22h    BYTE    mouse Y scaling factor
  16145.  23h    BYTE    initial VDU mode and drive count
  16146.  24h    BYTE    initial VDU character attribute
  16147.  25h    BYTE    size of RAM disk in 2K blocks
  16148.  26h    BYTE    initial system UART setup byte
  16149.  27h    BYTE    initial external UART setup byte
  16150.  28h 24 BYTEs    available for user application
  16151. Note:    bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
  16152.       the clock chip
  16153.  
  16154. Bitfields for RTC status register A:
  16155. Bit(s)    Description    (Table 0332)
  16156.  7    set if date/time being updated
  16157.  6-4    time base speed, default 010 = 32768 Hz
  16158.  3-0    interrupt rate selection, default 0110 = 1024 Hz
  16159. SeeAlso: #0331
  16160.  
  16161. Bitfields for RTC status register B:
  16162. Bit(s)    Description    (Table 0333)
  16163.  7    clear if normal update, set if abort update
  16164.  6    periodic interrupt enable
  16165.  5    alarm interrupt enable
  16166.  4    update end interrupt enable
  16167.  3    square wave enable
  16168.  2    date mode (clear = BCD, set = binary)
  16169.  1    24-hour format
  16170.  0    daylight saving time enable
  16171. SeeAlso: #0331
  16172.  
  16173. Bitfields for RTC status register C:
  16174. Bit(s)    Description    (Table 0334)
  16175.  7    IRQF flag
  16176.  6    PF flag
  16177.  5    AF flag
  16178.  4    UF flag
  16179. SeeAlso: #0331
  16180. --------O-1501-------------------------------
  16181. INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
  16182.     AH = 01h
  16183.     STACK:    WORD    object ID of requestor
  16184.         DWORD    pointer to ASCIZ name of requested method
  16185.             "assign" assign channel to object
  16186.             "deassign" deassign channel
  16187.             "cursor" set cursor on/off
  16188.             "init" initialize comm port
  16189.             "open" open I/O channel
  16190.             "position" set cursor position
  16191.             "receive" get buffered packet from comm port
  16192.             "send" send buffered packet to comm port
  16193.             "vio" set current virtual I/O to specified channel
  16194.             "window" make window at cursor position
  16195.         ---if "assign"---
  16196.          WORD    object UID
  16197.          WORD    caller UID/PID
  16198.          DWORD    CSL with port
  16199.         ---if "deassign"---
  16200.          WORD    channel ID
  16201.         ---if "cursor"---
  16202.          WORD    channel ID (must be a SRCSINK)
  16203.          WORD    new state (0000h off, 0001h on)
  16204.         ---if "init"---
  16205.          WORD    channel ID (must be a SRCSINK)
  16206.          WORD    comm port number (00h-03h)
  16207.          WORD    UART init code
  16208.         ---if "open"---
  16209.          WORD    channel ID
  16210.         ---if "position"---
  16211.          WORD    channel ID (must be a SRCSINK)
  16212.          WORD    position (high byte = row, low byte = column)
  16213.         ---if "receive"---
  16214.          DWORD    pointer to buffer
  16215.         ---if "send"---
  16216.          WORD    length of buffer
  16217.          DWORD    pointer to buffer
  16218.         ---if "vio"---
  16219.          WORD    channel ID (must be a SRCSINK)
  16220.         ---if "window"---
  16221.          WORD    top left (high byte = row, low byte = column)
  16222.          WORD    bottom right (high byte = row, low byte = column)
  16223. Return: DX:AX -> IRP structure or 0000h:0000h
  16224. SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
  16225. --------T-1501-------------------------------
  16226. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
  16227.     AH = 01h
  16228.     AL = semaphore number (00h-3Fh)
  16229. Return: AH = status
  16230.         00h successful
  16231.         02h invalid semaphore number
  16232. Notes:    if the semaphore is not owned, ownership is assigned to the calling
  16233.       task and the call returns immediately
  16234.     if the semaphore is already owned by another task, the calling task
  16235.       is placed on a queue for the semaphore and suspended until it can
  16236.       become owner of the semaphore
  16237.     semaphore 0 is used internally by MultiDOS to synchronize DOS access
  16238. SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
  16239. --------B-1502-------------------------------
  16240. INT 15 - CASSETTE - READ DATA (PC and PCjr only)
  16241.     AH = 02h
  16242.     CX = number of bytes to read
  16243.     ES:BX -> buffer
  16244. Return: CF clear if successful
  16245.         DX = number of bytes read
  16246.         ES:BX -> byte following last byte read
  16247.     CF set on error
  16248.     AH = status (see #0335)
  16249. SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE",MEM 0040h:0069h,MEM 0040h:006Bh"PC"
  16250.  
  16251. (Table 0335)
  16252. Values for Cassette status:
  16253.  00h    successful
  16254.  01h    CRC error
  16255.  02h    bad tape signals
  16256.  04h    no data
  16257.  80h    invalid command
  16258.  86h    no cassette present
  16259. --------b-1502-------------------------------
  16260. INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
  16261.     AH = 02h
  16262.     AL = NVRAM location (00h to 3Fh)
  16263. Return: AH = return code
  16264.         00h OK
  16265.         01h address bad
  16266.         02h checksum error
  16267.     AL = NVRAM data value
  16268. SeeAlso: AH=01h"Amstrad"
  16269. --------O-1502-------------------------------
  16270. INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
  16271.     AH = 02h
  16272.     STACK:    WORD    object ID of requestor
  16273.         DWORD    pointer to ASCIZ name of requested method
  16274.             "assign" allocate low memory block
  16275.             "assign extended" allocate extended memory pages
  16276.             "assign gdt" allocate GDT selector
  16277.             "paged" allocate low paged memory
  16278.             "paged extended" alllocate extended memory pages
  16279.             "deassign" free memory block
  16280.             "deassign gdt" free GDT selector
  16281.             "getvpage" get physical address for virtual page
  16282.             "setvpage" set physical address for virtual page
  16283.             "info" get VMiX memory usage info block
  16284.             "move" move contents of 32-bit memory
  16285.             "newmcb" make new DOS memory control block
  16286.             "owner" get process ID of MCB or PSP owner
  16287.             "umb" allocate upper memory block
  16288.             "video" toggle system use of video memory and get stat
  16289.         ---if "assign"---
  16290.          WORD    number of objects
  16291.          WORD    size in bytes (multiple of 512 bytes)
  16292.         ---if "assign extended"---
  16293.          WORD    number of objects
  16294.          WORD    size in bytes (multiple of 4K)
  16295.         ---if "assign gdt"---
  16296.          WORD    access type (low byte)
  16297.          WORD    segment size in paragraphs
  16298.          DWORD    pointer to start of physical segment
  16299.         ---if "paged"---
  16300.          WORD    number of 512-byte pages
  16301.         ---if "paged extended"
  16302.          WORD    number of 4K pages
  16303.         ---if "deassign"---
  16304.          DWORD    pointer returned by previous allocation call
  16305.         ---if "deassign gdt"---
  16306.          WORD    GDT selector
  16307.         ---if "getvpage"---
  16308.          WORD    owner's process ID
  16309.          DWORD    pointer to buffer for page structure (struct VPGE)
  16310.         ---if "setvpage"---
  16311.          WORD    owner's process ID
  16312.          DWORD    pointer to new page structure (struct VPGE)
  16313.         ---if "info"---
  16314.          no additional arguments
  16315.         ---if "move"
  16316.          DWORD    32-bit source address
  16317.          DWORD    32-bit destination address
  16318.          WORD    number of words to move
  16319.         ---if "newmcb"---
  16320.          DWORD    pointer to new MCB's location
  16321.          WORD    size of memory block
  16322.          DWORD    pointer to ASCIZ name string (max 8 chars)
  16323.         ---if "owner"---
  16324.          WORD    MCB or PSP segment
  16325.         ---if "umb"---
  16326.          WORD    size in paragraphs
  16327.         ---if "video"---
  16328.          no additional arguments
  16329. Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
  16330. SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
  16331. --------T-1502-------------------------------
  16332. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
  16333.     AH = 02h
  16334.     AL = semaphore number (00h-3Fh)
  16335. Return: AH = status
  16336.         00h successful
  16337.         01h not semaphore owner
  16338.         02h invalid semaphore number
  16339. Notes:    if any tasks are waiting for the semaphore, the first task on the wait
  16340.       queue will become the new owner and be reawakened
  16341.     do not use within an interrupt handler
  16342. SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
  16343. --------B-1503-------------------------------
  16344. INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
  16345.     AH = 03h
  16346.     CX = number of bytes to write
  16347.     ES:BX -> data buffer
  16348. Return: CF clear if successful
  16349.         ES:BX -> byte following last byte written
  16350.     CF set on error
  16351.     AH = status (see #0335)
  16352.     CX = 0000h
  16353. SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
  16354. --------V-1503-------------------------------
  16355. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
  16356.     AH = 03h
  16357.     AL = value (I,R,G,B bits)
  16358. Return: nothing
  16359. SeeAlso: AH=04h"Amstrad"
  16360. --------O-1503-------------------------------
  16361. INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
  16362.     AH = 03h
  16363.     STACK:    DWORD    pointer to ASCII prompt
  16364.         WORD    field outline character
  16365.         WORD    length of input field (max 7Fh)
  16366.         DWORD    address of pointer to input buffer
  16367. Return: AX = length of input (input buffer is padded with blanks)
  16368. SeeAlso: AH=04h"VMiX"
  16369. --------T-1503-------------------------------
  16370. INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
  16371.     AH = 03h
  16372.     DX = number of time slices to remain suspended
  16373. Return: after specified interval has elapsed
  16374. Note:    when priority-based scheduling is in use, high-priority tasks should
  16375.       use this function to yield the processor
  16376. SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
  16377. --------B-1504-------------------------------
  16378. INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
  16379.     AH = 04h
  16380.     ES:DI -> 32-byte results buffer for System Parameter Table (see #0336)
  16381.     DS = segment containing ABIOS RAM extensions (zero if none)
  16382. Return: CF clear if successful
  16383.         AH = 00h success
  16384.         ES:DI buffer filled
  16385.         AL destroyed
  16386.     CF set on failure
  16387.         AX destroyed
  16388.         AH = 80h/86h if not supported
  16389. SeeAlso: AH=05h"ABIOS",AH=C1h
  16390.  
  16391. Format of ABIOS System Parameter Table:
  16392. Offset    Size    Description    (Table 0336)
  16393.  00h    DWORD    FAR address of ABIOS Common Start Routine
  16394.  04h    DWORD    FAR address of ABIOS Interrupt Routine
  16395.  08h    DWORD    FAR address of ABIOS Time-out Routine
  16396.  0Ch    WORD    number of bytes of stack required by this ABIOS implementation
  16397.  0Eh 16 BYTEs    reserved
  16398.  1Eh    WORD    number of entries in initialization table
  16399. --------V-1504-------------------------------
  16400. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
  16401.     AH = 04h
  16402.     AL = value (RDSEL1 and RDSEL0)
  16403. Return: nothing
  16404. SeeAlso: AH=03h"Amstrad",AH=05h"Amstrad"
  16405. --------O-1504-------------------------------
  16406. INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
  16407.     AH = 04h
  16408.     STACK:    DWORD    control string
  16409.         DWORD    array of arguments
  16410. Return: nothing
  16411. SeeAlso: AH=03h"VMiX"
  16412. --------T-1504-------------------------------
  16413. INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
  16414.     AH = 04h
  16415.     AL = mailbox number (00h-3Fh)
  16416.     CX = message length in bytes
  16417.     DS:SI -> message
  16418. Return: AH = status
  16419.         00h successful
  16420.         01h out of message memory
  16421.         02h invalid mailbox number
  16422. Note:    the message is copied into a system buffer; the caller may immediately
  16423.       reuse its buffer
  16424. SeeAlso: AH=05h"MultiDOS"
  16425. --------B-1505-------------------------------
  16426. INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
  16427.     AH = 05h
  16428.     ES:DI -> results buffer of length 18h * Number_of_Entries (see #0337)
  16429.     DS = segment containing ABIOS RAM extensions (zero if none)
  16430. Return: CF clear if successful
  16431.         AH = 00h success
  16432.         ES:DI buffer filled
  16433.         AL destroyed
  16434.     CF set on failure
  16435.         AX destroyed
  16436.         AH = 80h/86h if not supported
  16437. SeeAlso: AH=04h"ABIOS",AH=C1h
  16438.  
  16439. Format of one entry of ABIOS Initialization Table:
  16440. Offset    Size    Description    (Table 0337)
  16441.  00h    WORD    device ID (see #0338)
  16442.  02h    WORD    number of Logical IDs
  16443.  04h    WORD    Device Block length (zero for ABIOS patch or extension)
  16444.  06h    DWORD    -> init routine for Device Block and Function Transfer Table
  16445.  0Ah    WORD    request block length
  16446.  0Ch    WORD    Function Transfer Table length (zero for a patch)
  16447.  0Eh    WORD    Data Pointers length (in Common Data Area)
  16448.  10h    BYTE    secondary device ID (hardware level this ABIOS ver supports)
  16449.  11h    BYTE    revision (device driver revision level this ABIOS supports)
  16450.  12h  6 BYTEs    reserved
  16451.  
  16452. (Table 0338)
  16453. Values for ABIOS device ID:
  16454.  00h    ABIOS internal calls
  16455.  01h    floppy disk
  16456.  02h    hard disk
  16457.  03h    video
  16458.  04h    keyboard
  16459.  05h    parallel port
  16460.  06h    serial port
  16461.  07h    system timer
  16462.  08h    real-time clock
  16463.  09h    system services
  16464.  0Ah    NMI
  16465.  0Bh    mouse
  16466.  0Eh    CMOS RAM
  16467.  0Fh    DMA
  16468.  10h    Programmable Option Select (POS)
  16469.  16h    keyboard password
  16470. --------V-1505-------------------------------
  16471. INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
  16472.     AH = 05h
  16473.     AL = value (I,R,G,B bits)
  16474. Return: nothing
  16475. SeeAlso: AH=04h"Amstrad"
  16476. --------O-1505-------------------------------
  16477. INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
  16478.     AH = 05h
  16479. Return: AX = process ID
  16480. SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
  16481. --------T-1505-------------------------------
  16482. INT 15 - MultiDOS Plus - CHECK MAILBOX
  16483.     AH = 05h
  16484.     AL = mailbox number (00h-3Fh)
  16485. Return: AH = status
  16486.         00h successful
  16487.         DX = length of first message in queue, 0000h if no message
  16488.         02h invalid mailbox number
  16489. SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
  16490. --------b-1506-------------------------------
  16491. INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
  16492.     AH = 06h
  16493. Return: BX = version number
  16494. --------O-1506-------------------------------
  16495. INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
  16496.     AH = 06h
  16497.     STACK:    WORD    process ID
  16498. Return: DX:AX -> process control block
  16499. SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
  16500. --------T-1506-------------------------------
  16501. INT 15 - MultiDOS Plus - READ MAILBOX
  16502.     AH = 06h
  16503.     AL = mailbox number (00h-3Fh)
  16504.     CX = size of buffer in bytes
  16505.     ES:DI -> buffer for message
  16506. Return: AH = status
  16507.         00h successful
  16508.         CX = number of bytes copied
  16509.         DX = actual length of message
  16510.         02h invalid mailbox number
  16511. Note:    if the caller's buffer is not large enough, the message is truncated
  16512.       and the remainder is lost
  16513. SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
  16514. --------O-1507-------------------------------
  16515. INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
  16516.     AH = 07h
  16517.     STACK:    WORD    object type
  16518. Return: DX:AX -> object control block
  16519. SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
  16520. ----------1507-------------------------------
  16521. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  16522.     AH = 07h
  16523. SeeAlso: AH=08h"IBM"
  16524. --------T-1507-------------------------------
  16525. INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
  16526.     AH = 07h
  16527.     BX:CX = entry point of new task
  16528.     DX = stack size in paragraphs
  16529. Return: AH = status
  16530.         00h successful
  16531.         01h no free task control blocks
  16532.         02h no free memory for task's stack
  16533. Note:    execution returns immediately to calling task
  16534. SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
  16535. --------O-1508-------------------------------
  16536. INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
  16537.     AH = 08h
  16538.     STACK:    WORD    channel ID
  16539. Return: DX:AX -> channel control block
  16540. SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
  16541. --------B-1508-------------------------------
  16542. INT 15 - IBM SurePath BIOS - WAIT REQUESTED TIME PERIOD
  16543.     AH = 08h
  16544.     AL = function
  16545.         00h wait in increments of 15.025 microseconds
  16546.         CX = number of time increments to wait (0000h = maximum)
  16547.         80h wait in increments of 840 ns
  16548.         ECX = number of time increments to wait
  16549.         81h I/O event wait
  16550.         BH = bitmask of bits to check
  16551.         BL = expected pattern
  16552.         DX = I/O port address
  16553.         ECX = number of 840 ns microticks to wait
  16554.         Return: ECX = 00000000h if expected pattern did not occur
  16555.         82h memory event wait
  16556.         BH = bitmask of bits to check
  16557.         BL = expected pattern
  16558.         ES:SI -> BYTE to check
  16559.         ECX = number of 840 ns microticks to wait
  16560.         Return: ECX = 00000000h if expected pattern did not occur
  16561.         other reserved
  16562. Return: CF clear if successful
  16563.     CF set on error
  16564.     AH = status
  16565.         00h successful
  16566.         01h used 15.025 microsecond interval, time rounded up
  16567.         08h reserved subfunction
  16568.         86h function not supported
  16569. Notes:    IBM classifies this function as optional
  16570.     if the POST determines that the timer is nonfunctional, this function
  16571.       uses the 15.025 microsecond refresh timer instead of the
  16572.       full-resolution timer
  16573. SeeAlso: AH=07h"IBM",AH=09h"IBM",AH=86h
  16574. --------T-1508-------------------------------
  16575. INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
  16576.     AH = 08h
  16577. Return: calling task terminated, so execution never returns to caller
  16578. Notes:    an internal task must be terminated with this function rather than a
  16579.       DOS termination function
  16580.     task's stack space is returned to parent task's memory pool
  16581. SeeAlso: AH=07h"MultiDOS"
  16582. --------O-1509-------------------------------
  16583. INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
  16584.     AH = 09h
  16585.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  16586.         WORD    subqueue ID
  16587. Return: AX = queue ID
  16588. SeeAlso: AH=0Ah"VMiX"
  16589. ----------1509-------------------------------
  16590. INT 15 - IBM BIOS - RESERVED FOR PCMCIA SYSTEM RESOURCE TABLE ACCESS
  16591.     AH = 09h
  16592.     no further details available
  16593. SeeAlso: AH=08h"IBM"
  16594. --------T-1509-------------------------------
  16595. INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
  16596.     AH = 09h
  16597.     AL = new priority
  16598. Return: nothing
  16599. Note:    the priority has different meanings depending on whether priority-
  16600.       based or round-robin scheduling is used
  16601. SeeAlso: AH=07h"MultiDOS"
  16602. --------O-150A-------------------------------
  16603. INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
  16604.     AH = 0Ah
  16605.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  16606.         WORD    ID of current element in queue chain
  16607. Return: AX = ID of next element
  16608. SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
  16609. --------T-150A-------------------------------
  16610. INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
  16611.     AH = 0Ah
  16612.     AL = new interval
  16613.         00h = 55.0 ms (default)
  16614.         80h = 27.5 ms
  16615.         40h = 13.75 ms
  16616.         20h = 6.88 ms
  16617.         10h = 3.44 ms
  16618.         08h = 1.72 ms
  16619. SeeAlso: AH=03h"MultiDOS"
  16620. --------O-150B-------------------------------
  16621. INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
  16622.     AH = 0Bh
  16623.     STACK:    WORD    caller's UID
  16624.         DWORD    pointer to ASCIZ name of requested method
  16625.             "abort" abort current send/receive on comm port
  16626.             "block" start/end critical section
  16627.             "close" terminate interrupt-drive comm I/O
  16628.             "open" prepare comm port for interrupt-driven I/O
  16629.             "delay" set delay timer and wait
  16630.             "hibernate" put process to sleep
  16631.             "ints" enable/disable interrupt-driven INT 14h
  16632.             "length" get current send/receive buffer offsets
  16633.             "kswitch" switch stacks
  16634.             "numproc" get number of active processes
  16635.             "protocol" set protocol function for comm interrupts
  16636.             "relocate" set/reset VMiX flag for relocating to himem
  16637.             "status" get current open comm port status
  16638.             "wake" awaken a process
  16639.             "xport" get comm port polled for logins
  16640.         ---if "abort"---
  16641.          no additional arguments
  16642.         ---if "block"---
  16643.          WORD    0000h end, 0001h start
  16644.         ---if "close"---
  16645.          no additional arguments
  16646.         ---if "open"---
  16647.          WORD    comm port (00h-03h)
  16648.          WORD    BIOS parameter byte (see #0226 at INT 14/AH=00h),
  16649.             except bits 7-5: 000 = 19200, 001 = 38400, 011 = 115200
  16650.         ---if "delay"---
  16651.          WORD    time in seconds
  16652.         ---if "hibernate"---
  16653.          WORD    process ID
  16654.         ---if "ints"---
  16655.          WORD    0000h if no, 0001h if yes
  16656.         ---if "length","numproc","relocate","status","xport"---
  16657.          no additional arguments
  16658.         ---if "kswitch"---
  16659.          DWORD    pointer to new stack
  16660.         ---if "protocol"---
  16661.          DWORD    pointer to function (must be in low "assign"ed memory
  16662.             when in 386 mode)
  16663.         ---if "wake"---
  16664.          WORD    process ID
  16665. Return: DX:AX -> result or 0000h:0000h
  16666.         ---if "length"---
  16667.          BYTE    receive offset
  16668.          BYTE    send offset
  16669.         ---if "kswitch"---
  16670.          DWORD    old stack pointer
  16671.         ---if "numproc"---
  16672.          WORD    number of active processes
  16673.         ---if "status"---
  16674.          current open comm port status
  16675.         ---if "xport"---
  16676.          current comm port being polled for logins
  16677. Note:    the "delay" command reportedly disables the keyboard until the delay
  16678.       completes
  16679. SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
  16680. --------T-150B-------------------------------
  16681. INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
  16682.     AH = 0Bh
  16683. Return: nothing
  16684. Notes:    sets calling task's screen pointer to actual screen memory; the pointer
  16685.       may be restored with AH=0Ch
  16686.     caller's video mode must be same as foreground task's video mode
  16687.     any text written while in the background will be saved to the
  16688.       foreground task's virtual screen when it switches to the background
  16689.     useful if a background task wants to display a message on the
  16690.       foreground screen
  16691. SeeAlso: AH=0Ch"MultiDOS"
  16692. --------O-150C-------------------------------
  16693. INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
  16694.     AH = 0Ch
  16695.     STACK:    WORD    process ID
  16696. Return: DX:AX -> TSS stack store
  16697. SeeAlso: AH=00h"VMiX"
  16698. --------T-150C-------------------------------
  16699. INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
  16700.     AH = 0Ch
  16701. Return: nothing
  16702. Note:    restores task's screen pointer saved by AH=0Bh; must not be called
  16703.       unless AH=0Bh has been called first
  16704. SeeAlso: AH=0Bh"MultiDOS"
  16705. --------O-150D-------------------------------
  16706. INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
  16707.     AH = 0Dh
  16708.     STACK:    DWORD    ASCIZ string starting with requested I/O channel and
  16709.             followed by standard VMiX shell command string
  16710. Return: AX = process ID or error code "SYS_ERROR"
  16711. Note:    the maximum string length is 7Fh characters
  16712. SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
  16713. --------T-150D-------------------------------
  16714. INT 15 - MultiDOS Plus - DISABLE MULTITASKING
  16715.     AH = 0Dh
  16716. Return: nothing
  16717. Note:    calling task receives all time slices until AH=0Eh is called; this
  16718.       allows time-critical events or nonreentrant code to be processed
  16719. SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
  16720. --------O-150E-------------------------------
  16721. INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
  16722.     AH = 0Eh
  16723.     STACK:    WORD    process ID
  16724. Return: AX = status (SYS_OK or SYS_ERROR)
  16725. SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
  16726. --------T-150E-------------------------------
  16727. INT 15 - MultiDOS Plus - ENABLE MULTITASKING
  16728.     AH = 0Eh
  16729. Return: nothing
  16730. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
  16731. --------d-150F-------------------------------
  16732. INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
  16733.     AH = 0Fh
  16734.     AL = phase code
  16735.         00h reserved
  16736.         01h surface analysis
  16737.         02h formatting
  16738. Return: CF clear if formatting should continue
  16739.     CF set if formatting should terminate
  16740. Note:    called during ESDI drive formatting after each cylinder is completed
  16741. SeeAlso: INT 13/AH=1Ah
  16742. --------O-150F-------------------------------
  16743. INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
  16744.     AH = 0Fh
  16745.     STACK:    WORD    queue ID (0 = process queue, 1 = object q, 3 = type q)
  16746.         WORD    ID of element in queue chain
  16747. Return: AX = key
  16748. SeeAlso: AH=0Ah"VMiX"
  16749. --------T-150F-------------------------------
  16750. INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
  16751.     AH = 0Fh
  16752.     DS:BX -> ASCIZ command
  16753. Return: after command has been processed
  16754. Notes:    specified string is executed as if it had been typed at the MultiDOS
  16755.       command prompt
  16756.     the task is placed on a queue which MultiDOS examines periodically and
  16757.       is suspended until MultiDOS has processed the command
  16758.     all lowercase characters up to the first blank are converted to upper
  16759.       case within the given buffer
  16760. --------O-1510-------------------------------
  16761. INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE
  16762.     AH = 10h
  16763.     STACK:    DWORD    pointer to function
  16764.           N WORDs    function args
  16765. Return: AX = function's return value??? (not specified in documentation)
  16766. Note:    while the function is executing, the following global descriptors are
  16767.       available:
  16768.         20h stack segment
  16769.         38h code segment of function
  16770.         40h data alias for function's code segment
  16771.       additional GDT descriptors can be allocated using AH=02h with
  16772.       function "assign gdt"
  16773. SeeAlso: AH=02h"VMiX",AH=51h"VMiX"
  16774. --------T-1510-------------------------------
  16775. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
  16776.     AH = 10h
  16777.     AL = semaphore number (00h-3Fh)
  16778. Return: AH = status
  16779.         00h semaphore not in use
  16780.         01h semaphore owned by another task
  16781.         02h invalid semaphore number
  16782.         03h semaphore owned by caller
  16783. SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"
  16784. --------Q-151000-----------------------------
  16785. INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
  16786.     AX = 1000h
  16787. Return: after other processes run
  16788. Note:    under DESQview, if the process issuing this call has hooked INT 08h,
  16789.       the current time-slice is set to expire at the next clock tick rather
  16790.       than immediately
  16791. SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS"
  16792. SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 6F/AH=2Ah"F_YIELD"
  16793. SeeAlso: INT 7A/BX=000Ah,INT 7F/AH=02h"MultiLink",INT 7F/AH=E8h
  16794. --------Q-151001-----------------------------
  16795. INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  16796.     AX = 1001h
  16797.     BX = number of bytes to allocate
  16798. Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+)
  16799.     AX = status (DV v2.42)
  16800.         0000h successful
  16801.         0001h failed
  16802. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  16803.       common memory.  Under DV v2.42, this call never generates a user
  16804.       prompt regardless of the SETERROR value; instead, it always returns
  16805.       AX=0001h and ES:DI=0000h:0000h if out of memory
  16806. SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h
  16807. --------Q-151002-----------------------------
  16808. INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  16809.     AX = 1002h
  16810.     ES:DI -> previously allocated block
  16811. Return: block freed
  16812. SeeAlso: AX=1001h,AX=DE0Dh
  16813. --------Q-151003-----------------------------
  16814. INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
  16815.     AX = 1003h
  16816.     BH = attribute
  16817.     BL = character
  16818.     DX = segment of object handle for window
  16819. Return: nothing
  16820. Note:    BX=0000h does not display anything, it only positions the hardware
  16821.       cursor to the logical cursor's current position
  16822. --------Q-1510-------------------------------
  16823. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  16824.     AH = 10h
  16825.     AL = 04h thru 12h
  16826. Return: pops up "Programming error" window in DV 2.x
  16827. --------Q-151013-----------------------------
  16828. INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
  16829.     AX = 1013h
  16830.     ES:DI -> FAR service routine
  16831. Return: BX = bit mask indicating which bit was allocated
  16832.          0000h if no more bits available
  16833. SeeAlso: AX=1014h,AX=1015h
  16834. Note:    only a few TopView/DESQview API calls are allowed during a hardware
  16835.       interrupt; if other calls need to be made, the interrupt handler
  16836.       must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
  16837. --------Q-151014-----------------------------
  16838. INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
  16839.     AX = 1014h
  16840.     BX = bit mask from INT 15/AX=1013h
  16841. Return: nothing
  16842. SeeAlso: AX=1013h,AX=1015h
  16843. --------Q-151015-----------------------------
  16844. INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
  16845.     AX = 1015h
  16846.     BX = bit mask for interrupts to post
  16847. Return: indicated routines will be called: (DV 2.0x) at next task switch
  16848.                        (DV 2.2x) immediately on return from
  16849.                              hardware interrupt
  16850. Notes:    this is one of the few TopView calls which are allowed from a hardware
  16851.       interrupt handler
  16852.     the handler will be called with ES containing the segment of the handle
  16853.       of the next task to be executed; on return, ES must be the segment of
  16854.       a task handle
  16855. SeeAlso: AX=1013h,AX=1014h
  16856. --------Q-151016-----------------------------
  16857. INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
  16858.     AX = 1016h
  16859.     ES:DI = possible object handle
  16860. Return: BX = status
  16861.         FFFFh if ES:DI is a valid object handle (see #0340)
  16862.         0000h if ES:DI is not
  16863. Note:    under DESQview versions prior to 2.50, an object handle is always a
  16864.       pointer to the object; for versions 2.50 and up, only task handles
  16865.       are always pointers--other handles may consist of a unique object
  16866.       number and offset into DESQview's common memory (see #0349)
  16867. SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch
  16868.  
  16869. (Table 0339)
  16870. Values for DESQview object type:
  16871.  00h    window/task
  16872.  01h    mailbox
  16873.  02h    keyboard
  16874.  03h    timer
  16875.  04h    pointer
  16876.  05h    panel
  16877.  06h    objectq
  16878.  
  16879. Format of DESQview object:
  16880. Offset    Size    Description    (Table 0340)
  16881.  00h    WORD    offset in common memory of previous object of same type
  16882.  02h    WORD    offset in common memory of next object of same type
  16883.  04h    WORD    signature FEDCh (DV 2.42-)
  16884.         signature FEDCh or object number (DV 2.50+)
  16885.  06h    WORD    object type (see #0339)
  16886.  08h    DWORD    object handle to return to caller
  16887.  0Ch    DWORD    canonicalized object address (segment = common memory)
  16888.  10h    WORD    offset in common memory of owning task
  16889.         (0000h for unowned OBJECTQs)
  16890.  12h    WORD    mapping context
  16891.         offset in common memory of mapping context record (see #0342)
  16892.     remainder varies by object type and DESQview version
  16893. ---v2.42 keyboard object---
  16894.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  16895.         bit 15: keyboard opened
  16896.  16h  4 BYTEs    ???
  16897.  1Ah    WORD    priority in OBJECTQ???
  16898.  1Ch    ...
  16899.  25h    WORD    offset in common memory of ??? task
  16900.  27h  4 BYTEs    ???
  16901. ---v2.42 objectq object---
  16902.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  16903.         bit 15: OBJECTQ opened
  16904.  16h  2 BYTEs    ???
  16905.  18h    WORD    offset in common memory of ??? task
  16906.  1Ah  6 BYTEs    ???
  16907. ---v2.42 mailbox object---
  16908.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  16909.         bit 15: mailbox opened
  16910.  1Ah    WORD    priority in OBJECTQ???
  16911.  1Ch  6 BYTEs    ???
  16912.  22h    WORD    offset in common memory of mailbox name (counted string)
  16913.         0000h if no name
  16914.      <= 5 BYTEs ???
  16915. ---v2.22-2.42,2.52,2.60 window/task object---
  16916.  14h    BYTE    00h window, 01h task
  16917.  15h    BYTE    internal (not Switch menu) window number???
  16918.  16h    BYTE    internal (not Switch menu) window number???
  16919.  17h    WORD    segment of internal window record (see #0343)
  16920.  19h  2 BYTEs    ???
  16921.  1Bh    BYTE    cursor row
  16922.  1Ch    BYTE    cursor column
  16923.  1Dh    BYTE    visible window origin, row
  16924.  1Eh    BYTE    visible window origin, column
  16925.  1Fh    BYTE    window height (logical)
  16926.  20h    BYTE    window width (logical)
  16927.  21h    BYTE    window position, row
  16928.  22h    BYTE    window position, column
  16929.  23h    BYTE    window height (visible)
  16930.  24h    BYTE    window width (visible)
  16931.  25h    BYTE    row of top of frame (or window if unframed)
  16932.  26h    BYTE    column of left of frame (or window if unframed)
  16933.  27h    BYTE    window height (physical, including frame)
  16934.  28h    BYTE    window width (physical, including frame)
  16935.  29h    BYTE    unzoomed visible origin, row (00h before first zoom)
  16936.  2Ah    BYTE    unzoomed visible origin, column (00h before first zoom)
  16937.  2Bh    BYTE    unzoomed window position, row (00h before first zoom)
  16938.  2Ch    BYTE    unzoomed window position, column (00h before first zoom)
  16939.  2Dh    BYTE    unzoomed window height (00h before first zoom)
  16940.  2Eh    BYTE    unzoomed window width (00h before first zoom)
  16941.         unzoomed parameters above are updated when window is zoomed
  16942.           to full screen
  16943.  2Fh    BYTE    ??? initially logical window height
  16944.  30h    BYTE    ??? initially logical window width
  16945.  31h  2 BYTEs    ???
  16946.  33h    BYTE    minimum height of window
  16947.  34h    BYTE    minimum width of window
  16948.  35h    BYTE    maximum height of window
  16949.  36h    BYTE    maximum width of window
  16950.  37h  3 BYTEs    ???
  16951.  3Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  16952.  42h 24 BYTEs    attributes???
  16953.  5Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  16954.  62h  3 BYTEs    ???
  16955.  65h    BYTE    ??? bitflags
  16956.  66h    BYTE    bit 0: window is zoomed
  16957.  67h    BYTE    ???
  16958.  68h    WORD    offset in common memory of window name or 0000h if untitled
  16959.  6Ah    WORD    length of window name
  16960.  6Ch  2 BYTEs    ???
  16961.  6Eh    WORD    offset of logical cursor in window (in character cells)
  16962.  70h    DWORD    pointer to field table for window
  16963.  74h    BYTE    ???
  16964.  75h  2 BYTEs    ???
  16965.  77h    BYTE    number of last-visited field
  16966.  78h    DWORD    pointer to field table entry for last-visited field
  16967.  7Ch  3 BYTEs    ???
  16968.  7Fh    BYTE    select field marker character
  16969.  80h    BYTE    ??? bit flags
  16970.         bit 0: allow ECh window stream opcode to change reverse logattr
  16971.         bit 1: alternate field processing mode selected
  16972.  81h    BYTE    ???
  16973.  82h    DWORD    notification function (manager stream opcode 8Ah)
  16974.         no notification if segment = 0000h
  16975.  86h    DWORD    notification argument (manager stream opcode 8Bh)
  16976.  8Ah    WORD    offset in common memory of ??? window object or 0000h
  16977.  8Ch    WORD    offset in common memory of ??? window object or 0000h
  16978.  8Eh    WORD    offset in common memory of ??? window object or 0000h
  16979.  90h    BYTE    ??? bitflags
  16980.  91h    BYTE    ???
  16981.  ---task object only
  16982.  92h    BYTE    bit flags (bits 0-4)
  16983.  93h    BYTE    character for ??? (default 20h)
  16984.  94h    BYTE    ??? flag
  16985.  95h    WORD    offset in common memory of ???
  16986.  97h  2 BYTEs    ???
  16987.  99h    WORD    ???
  16988.  9Bh    BYTE    ??? bit flags
  16989.         bit 3: ???
  16990.         bit 6: perform protected-attribute processing on select fields
  16991.  9Ch    BYTE    ???
  16992.  9Dh    WORD    offset in common memory of current register save record
  16993.           (see #0341).    No register save record in use if < 01C0h
  16994.  9Fh    WORD    offset in common memory of task's keyboard object
  16995.  A1h    WORD    offset in common memory of task's OBJECTQ object
  16996.  A3h    WORD    offset in common memory of task's mailbox object
  16997.  A5h    WORD    semaphore: FFFFh if on user stack, else on task's private stack
  16998.  A7h    DWORD    user's SS:SP
  16999.  ABh    WORD    task's private SP (SS read from offset 0Ah)
  17000.  ADh  6 BYTEs    ???
  17001.  B3h    BYTE    ??? bit flags
  17002.         bit 0: run in foreground only
  17003.  B4h    BYTE    ???
  17004.  B5h    BYTE    ??? bitflags
  17005.  B6h    BYTE    task status (see #0479 at AX=DE2Ch)
  17006.  B7h  9 BYTEs    ???
  17007.  C0h    WORD    head pointer for keyboard buffer (wraps back to 00h after 80h)
  17008.  C2h    WORD    tail pointer for keyboard buffer (wraps back to 00h after 80h)
  17009.  C4h  2 BYTEs    ??? (0000h)
  17010.  C6h    WORD    segment of keyboard buffer for task
  17011.  C8h    WORD    offset in common memory of ??? keyboard object
  17012.  CAh    BYTE    ???
  17013. ---v2.22-2.42
  17014.  CBh    WORD    offset in common memory of ??? object
  17015.  CEh    BYTE    ??? flag
  17016.  CFh    WORD    offset in common memory of default notify window for task
  17017.           or 0000h if none
  17018.  D1h  4 BYTEs    ???
  17019.  D5h    BYTE    window number on Switch Window menu
  17020.  D6h  5 BYTEs    ???
  17021.  DBh    WORD    offset in common memory of ??? object
  17022.  DDh  2 BYTEs    ???
  17023.  DFh    WORD    API level for task
  17024.  E1h    WORD    offset in common memory of object task is waiting on if task
  17025.           status is 'waiting', else 0000h
  17026.  E7h    WORD    segment of ???
  17027.  E9h 4    BYTEs    ???
  17028.  EDh    WORD    EMS handle of virtualization buffer, 0000h if no virtualization
  17029.  F1h 12 BYTEs    ???
  17030.  FBh    WORD    ???
  17031.  FDh    BYTE    ???
  17032.  FFh 12 BYTEs    ???
  17033. 10Bh    DWORD    pointer to process record (see #0344,#0345)
  17034. 10Dh 10 BYTEs    ???
  17035. 119h    DWORD    SS:SP for ???
  17036. 11Dh  4 BYTEs    ???
  17037. 121h    DWORD    pointer to ???
  17038. 125h 25 BYTEs    ???
  17039. 13Eh    DWORD    pointer to ??? in system memory
  17040. ---v2.22
  17041. 142h  3 BYTEs    ???
  17042. 145h        task's default keyboard object
  17043. ---v2.42
  17044. 142h    DWORD    pointer to first task instance data record in system memory
  17045. 148h    DWORD    pointer to last task instance data record in system memory
  17046.         (see #0346)
  17047. 14Ah    BYTE    ???
  17048. 14Dh 42 BYTEs    task's default keyboard object
  17049. 177h 32 BYTEs    task's ObjectQ object
  17050. 197h 41 BYTEs    task's default mailbox object
  17051. 1C0h 24 BYTEs    first register save record
  17052. 450h    --    default top of private stack
  17053. ---v2.52 (probably all DV/X)
  17054. Same as v2.60 below except there is an extra 29 bytes inserted somewhere
  17055.   before offset 9Fh, but not yet known exactly where.  Also, for the WAIT_ON
  17056.   field (v2.60 offset E3h), some X apps (probably waiting on a socket) have
  17057.   0000h even when waiting.
  17058. ---v2.60
  17059.  CBh    WORD    ??? (added in 2.50 - rest is same as 2.42)
  17060.  CDh    WORD    offset in common memory of ??? object
  17061.  D0h    BYTE    ??? flag
  17062.  D1h    WORD    offset in common memory of default notify window for task
  17063.           or 0000h if none
  17064.  D3h  4 BYTEs    ???
  17065.  D7h    BYTE    window number on Switch Window menu
  17066.  D8h  5 BYTEs    ???
  17067.  DDh    WORD    offset in common memory of ??? object
  17068.  DFh  2 BYTEs    ???
  17069.  E1h    WORD    API level for task
  17070.  E3h    WORD    If status at B6h=waiting, offset in common memory of object
  17071.           that task is waiting on, else 0000h. (Task with CPU also
  17072.           has 0000h here)
  17073.  E9h    WORD    segment of ???
  17074.  EBh 4    BYTEs    ???
  17075.  EFh    WORD    EMS handle of virtualization buffer, 0 if no virtualization
  17076.  F3h 12 BYTEs    ???
  17077.  FDh    WORD    ???
  17078.  FFh    BYTE    ???
  17079. 101h  8 BYTEs    ???
  17080. 109h    DWORD    pointer to process record in system memory
  17081. 10Dh 14 BYTEs  ???
  17082. 11Bh    DWORD    SS:SP for ???
  17083. 11Fh  4 BYTEs    ???
  17084. 123h    DWORD    pointer to ???
  17085. 127h 25 BYTEs    ???
  17086. 140h    DWORD    pointer to ??? in system memory
  17087. 144h    DWORD    pointer to first task instance data record in system memory
  17088. 148h    DWORD    pointer to last task instance data record in system memory
  17089.         (from INT 15/AX=DE27h) (see #0346)
  17090. 14Ch    BYTE    ???
  17091. 14Eh 42 BYTEs    task's default keyboard object
  17092. 179h 32 BYTEs    task's ObjectQ object
  17093. 199h 41 BYTEs    task's default mailbox object
  17094. 1C2h 24 BYTEs    first register save record
  17095. 452h    --    default top of private stack
  17096.  
  17097. Format of DESQview Register Save Record:
  17098. Offset    Size    Description    (Table 0341)
  17099.  00h    WORD    AX
  17100.  02h    WORD    BX
  17101.  04h    WORD    CX
  17102.  06h    WORD    DX
  17103.  08h    WORD    DI
  17104.  0Ah    WORD    SI
  17105.  0Eh    WORD    DS
  17106.  10h    WORD    ES
  17107.  12h    DWORD    return address
  17108.  16h    WORD    original flags
  17109.  
  17110. Format of DESQview mapping context record:
  17111. Offset    Size    Description    (Table 0342)
  17112.  00h    WORD    lowest segment in process's memory
  17113.         (often start of system memory chain)
  17114.  02h    WORD    size of process's memory in paragraphs
  17115.  04h    BYTE    flag: 00h if process swapped out, 01h otherwise
  17116.  05h    BYTE    flag: 00h if allocated in conventional memory, 01h if EMS
  17117.  06h  2 BYTEs    ???
  17118.  08h    WORD    EMS handle if in EMS, else 0
  17119.  0Ah  2 BYTEs    ??? (nonzero if system memory resides in shared mem???)
  17120.  0Ch    WORD    segment of system memory block that contains process record,
  17121.           referenced from segment of start of system memory chain
  17122.  0Eh    BYTE    ???
  17123.  0Fh    WORD    size of system memory block that contains process record
  17124.           and DOS memory in paragraphs
  17125.  11h    BYTE    bit flags
  17126.         Bit 0: Swapped out???
  17127.         Bit 1: ???
  17128.         Bit 2: Swapped out???
  17129.  12h    BYTE    ???
  17130.  13h    BYTE    reference count
  17131.  ---v2.31
  17132.  14h 10 BYTEs    ???
  17133.  1Eh    WORD    segment of process record
  17134.  20h  2 BYTEs    ???
  17135.  22h    WORD    segment of ???    (in first free system memory block???)
  17136.  24h    WORD    segment of end of system memory chain
  17137.  26h    WORD    segment of start of system memory chain
  17138.  28h  8 BYTEs    ???
  17139.  2Ah    DWORD    pointer to ??? (process record???)
  17140.  2Dh 10 BYTEs    ???
  17141.  37h    BYTE    lowest interrupt vector to save on context switch
  17142.  38h    BYTE    highest interrupt vector to save on context switch
  17143.  39h    WORD    offset in common memory of main task with this context
  17144.  3Ah 12 BYTEs    ???
  17145.  46h    BYTE    internal mapping context number
  17146.  47h 12 BYTEs    ???
  17147.  ---v2.5x-2.60
  17148.  14h  6 BYTEs    ???
  17149.  1Ah    WORD    segment of process record
  17150.  1Ch  2 BYTEs    ???
  17151.  1Eh    WORD    segment of first free system memory block
  17152.  20h    WORD    segment of start of system memory chain
  17153.  22h    WORD    segment of end of system memory chain
  17154.  24h 8    BYTEs    ???
  17155.  2Ch    DWORD    pointer to ??? (1 segment into process record???)
  17156.  30h 3    BYTEs    ???
  17157.  33h    WORD    Offset in common memory of main task with this context
  17158.  35h 7    BYTEs    ???
  17159.  3Ch    BYTE    internal mapping context number
  17160.  3Dh 14 BYTEs    ???
  17161.  4Bh    WORD    first DOS memory segment (first MCB segment+1)
  17162.  4Dh    BYTE    ??? (flag???)
  17163.  ---v2.53 (2.5x???)
  17164.  4Eh 12 BYTEs    ???
  17165.  ---v2.60
  17166.  4Eh    WORD    segment of script buffer (see #0347)
  17167.  50h  6 BYTEs    ???
  17168.  
  17169. Format of DESQview Internal Window Record (v2.31-2.60):
  17170. Offset    Size    Description    (Table 0343)
  17171.  00h    BYTE    internal window number???
  17172.  01h    BYTE    display page???
  17173.  02h    BYTE    video mode
  17174.  03h  3 BYTEs    ???
  17175.  06h    BYTE    logical window height
  17176.  07h    BYTE    logical window width
  17177.  08h    DWORD    pointer to text video buffer
  17178.  0Ch 116 BYTEs    ???
  17179.  
  17180. Format of DESQview process record (v2.31):
  17181. Offset    Size    Description    (Table 0344)
  17182. -470h 13 BYTEs    filename of ??? Script
  17183. -463h 1117 BYTEs ??? (script buffer???)
  17184.  -6h  6 BYTEs    ???
  17185.  00h    WORD    segment of parent PSP in process
  17186.  02h  5 BYTEs    ???
  17187.  07h    WORD    segment of current PSP in process
  17188.  09h    WORD    segment of first MCB in process
  17189.  0Bh 13 BYTEs    ???
  17190.  18h 1024 BYTEs process's interrupt vector table
  17191. 418h 376 BYTEs    ???
  17192. 590h        first MCB in process
  17193. SeeAlso: #0345
  17194.  
  17195. Format of DESQview process record (v2.52-v2.60) (probably also 2.5x):
  17196. Offset    Size    Description    (Table 0345)
  17197.  00h 28 BYTEs    EXE header of last EXE, ??? if last program run was COM
  17198.  1Ch ??? BYTEs    overwritten with ASCIZ filename of last program run (EXE/COM)
  17199. 11Ch    WORD    segment of parent PSP in process
  17200. 11Eh  4 BYTEs    ???
  17201. 122h    WORD    segment of current PSP
  17202. 124h    WORD    segment of current PSP
  17203. 126h    WORD    segment of first MCB in process
  17204. 128h  4 BYTEs    ???
  17205. 12Ch    DWORD    pointer to first process instance data record in system memory
  17206. 130h    DWORD    pointer to last process instance data record in system memory
  17207.         (from INT 15/AX=DE27h) (see #0346)
  17208. 134h  8 BYTEs    ???
  17209. 13Ch    WORD    size of current environment
  17210. 13Eh    WORD    segment of current environment
  17211. 140h    WORD    segment of current PSP
  17212. 142h    DWORD    entry point of current program
  17213. 146h 10 BYTEs    ???
  17214. ---v2.52 (v2.5x???)
  17215. 150h    BYTE    ???
  17216. 151h    WORD    segment of parent PSP in process
  17217. 153h    WORD    ???
  17218. 155h    WORD    ???
  17219. 157h    WORD    ???
  17220. 159h  4 BYTEs    ???
  17221. 15Dh    WORD    segment of current environment
  17222. 15Fh    WORD    segment of current PSP
  17223. 161h    WORD    segment of ???
  17224. 162h    WORD    ???
  17225. 164h  3 BYTEs    ???
  17226. 168h 1024 BYTEs process's interrupt vector table
  17227. 568h 120 BYTEs    ???
  17228. 5E0h        first MCB in process
  17229. ---v2.60
  17230. 150h    WORD    segment of parent PSP in process
  17231. 152h    WORD    ???
  17232. 154h    WORD    ???
  17233. 156h    WORD    ???
  17234. 158h  4 BYTEs    ???
  17235. 15Ch    WORD    segment of current environment
  17236. 15Eh    WORD    segment of current PSP
  17237. 160h    WORD    segment of ???
  17238. 162h    WORD    ???
  17239. 164h 1024 BYTEs process's interrupt vector table
  17240. 564h 108 BYTEs    ???
  17241. 5D0h        first MCB in process
  17242. SeeAlso: #0344
  17243.  
  17244. Format of DESQview task or process instance data record (v2.5x???, v2.60):
  17245. Offset    Size    Description    (Table 0346)
  17246.  00h    DWORD    pointer to next record of same type or 00000000
  17247.  04h    DWORD    pointer to previous record of same type or 00000000
  17248.  08h    DWORD    pointer to source area of memory during restore state
  17249.  0Ch    WORD    number of bytes to save/restore
  17250.  0Eh    DWORD    pointer to destination area of memory during restore state
  17251.  12h    WORD    ??? (0)
  17252.  14h  N BYTEs    source memory buffer during restore state
  17253.  
  17254. Format of DESQview script buffer (v2.60):
  17255. Offset    Size    Description    (Table 0347)
  17256.  00h 13 BYTEs    ASCIZ Script filename
  17257.  0Dh 80 BYTEs    ???
  17258.  5Eh  N BYTEs    script records (see #0348)
  17259.  
  17260. Format of one DESQview script record (v2.60):
  17261. Offset    Size    Description    (Table 0348)
  17262.  00h    BYTE    signature 12h
  17263.  01h 18 BYTEs    blank-padded script name
  17264.  13h    BYTE    ASCII code of key attached to script or 0 if non-ASCII key
  17265.  14h    BYTE    scan code of key attached to script if non-ASCII, else 0
  17266.  15h    BYTE    ???
  17267.  16h    WORD    size of script in bytes
  17268.  18h  N    BYTEs    script (ASCII code of each keystroke; if 0, next byte is
  17269.           scan code of non-ASCII key)
  17270. SeeAlso: #0347
  17271.  
  17272. Format of DESQview Common Memory Header (v2.31-2.60):
  17273. Offset    Size    Description    (Table 0349)
  17274.  00h    WORD    offset of lowest used block
  17275.  02h    WORD    bytes of commom memory, including header
  17276.  04h    WORD    offset of first free block
  17277.  06h  N BYTEs    size depends of DV version, ??? (DVP buffer???)
  17278. Note:    the above is located at the beginning of the commom memory segment
  17279. SeeAlso: #0350,#0351,#0359
  17280.  
  17281. Format of DESQview Free block header:
  17282. Offset    Size    Description    (Table 0350)
  17283.  00h    WORD    size of block in bytes including header
  17284.  02h    WORD    offset of next free block
  17285.  04h  N BYTEs    free block
  17286. SeeAlso: #0349,#0351
  17287.  
  17288. Format of DESQview Used block header:
  17289. Offset    Size    Description    (Table 0351)
  17290.  00h    WORD    size of block in bytes including header
  17291.  02h  N BYTEs    used block
  17292. SeeAlso: #0349,#0350
  17293. --------Q-151017-----------------------------
  17294. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  17295.     AX = 1017h
  17296. Return: pops up "Programming error" window in DV 2.x
  17297. --------Q-151018-----------------------------
  17298. INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
  17299.     AX = 1018h
  17300.     BH = column
  17301.     BL = row
  17302.     ES = segment of object handle for window below which to search
  17303.          0000h = start search with topmost window
  17304. Return: ES = segment of object handle for window which is visible at the
  17305.            indicated position, or covered by indicated window
  17306.         0000h if no window
  17307. SeeAlso: AX=1023h,AX=1024h
  17308. --------Q-151019-----------------------------
  17309. INT 15 - TopView - "SOUND" - MAKE TONE
  17310.     AX = 1019h
  17311.     BX = frequency in Hertz (0000h = silence)
  17312.     CX = duration in clock ticks (18.2 ticks/sec)
  17313. Return: immediately, tone continues to completion
  17314. Notes:    if another tone is already playing, the new tone does not start until
  17315.       completion of the previous one.  Up to 32 tones may be queued before
  17316.       the process is blocked until a note completes.
  17317.     in DV 2.00, the lowest tone allowed is 20 Hz
  17318.     if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
  17319.       notes are also cancelled
  17320. SeeAlso: AH=82h"HUNTER",INT 16/AH=73h
  17321. --------Q-15101A-----------------------------
  17322. INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
  17323.     AX = 101Ah
  17324. Return: stack switched
  17325. Notes:    this call may not be nested; a second call must be preceded by a call
  17326.       to "USTACK" (AX=1025h)
  17327.     while TopView requires many API calls to be executed while on the
  17328.       task's internal stack, DESQview allows those calls to be executed
  17329.       regardless of the current stack
  17330. SeeAlso: AX=1025h
  17331. --------Q-15101B-----------------------------
  17332. INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
  17333.     AX = 101Bh
  17334. Return: task-switching temporarily disabled
  17335. Notes:    will not task-switch until "ENDC" (AX = 101Ch) called unless task
  17336.       voluntarily releases the CPU (upon regaining the CPU, task-switching
  17337.       will again be disabled)
  17338.     suspends the caller until DOS is free
  17339. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
  17340. SeeAlso: INT 60/DI=0602h
  17341. --------Q-15101C-----------------------------
  17342. INT 15 - TopView - "ENDC" - END CRITICAL REGION
  17343.     AX = 101Ch
  17344. Return: task-switching enabled
  17345. Note:    this API call may be made from within a hardware interrupt handler
  17346. SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h
  17347. --------Q-15101D-----------------------------
  17348. INT 15 - TopView - "STOP" - STOP TASK
  17349.     AX = 101Dh
  17350.     ES = segment of object handle for task to be stopped
  17351.          (== handle of main window for that task)
  17352. Return: indicated task will not get any CPU time until restarted with AX=101Eh
  17353. Note:    once a task has been stopped, additional "STOP"s are ignored
  17354. BUG:    in DV 2.00, this function is ignored unless the indicated task is the
  17355.       current task
  17356. SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h
  17357. --------Q-15101E-----------------------------
  17358. INT 15 - TopView - "START" - START TASK
  17359.     AX = 101Eh
  17360.     ES = segment of object handle for task to be started
  17361.          (== handle of main window for that task)
  17362. Return: indicated task is started up again
  17363. Note:    once a task has been started, additional "START"s are ignored
  17364. SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h
  17365. --------Q-15101F-----------------------------
  17366. INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
  17367.     AX = 101Fh
  17368.     BX = bit fields
  17369.          bits 0-12: number of characters to display
  17370.          bits 13,14: which mouse button may be pressed to remove window
  17371.              00 = either
  17372.              01 = left
  17373.              10 = right
  17374.              11 = either
  17375.          bit 15: beep if 1
  17376.     ES:DI -> text of message
  17377.     CH = width of error window (0 = default)
  17378.     CL = height of error window (0 = default)
  17379.     DX = segment of object handle
  17380. Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
  17381. Note:    window remains on-screen until ESC or indicated mouse button is pressed
  17382. --------Q-151020-----------------------------
  17383. INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
  17384.     AX = 1020h
  17385. Return: pops up "Programming error" window in DV v2.00+
  17386. --------Q-151021-----------------------------
  17387. INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
  17388.     AX = 1021h
  17389.     BX = segment of object handle for task to interrupt (not self)
  17390.     DX:CX -> FAR routine to jump to next time task is run
  17391. Return: nothing
  17392. Notes:    the FAR routine is entered with the current ES, DS, SI, DI, and BP
  17393.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  17394.       needs to be preserved
  17395.     multiple PGMINTs to a single task are processed last-in first-out
  17396.     if the other task is in a DOS or DV API call, the interruption will
  17397.       occur on return from that call
  17398. --------Q-151022BX0000-----------------------
  17399. INT 15 - TopView - "GETVER" - GET VERSION
  17400.     AX = 1022h
  17401.     BX = 0000h
  17402. Return: BX nonzero, TopView or compatible loaded
  17403.     (BL = major version, BH = minor version)
  17404. Notes:    TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h
  17405. --------Q-151023-----------------------------
  17406. INT 15 - TopView - "POSWIN" - POSITION WINDOW
  17407.     AX = 1023h
  17408.     BX = segment of object handle for parent window within which to
  17409.            position the window (0 = full screen)
  17410.     ES = segment of object handle for window to be positioned
  17411.     DL = general window position (see #0352)
  17412.     CH = number of columns to offset from position specified by DL
  17413.     CL = number of rows to offset from position specified by DL
  17414. Return: nothing
  17415.  
  17416. Bitfields for TopView general window position:
  17417. Bit(s)    Description    (Table 0352)
  17418.  0,1    horizontal position
  17419.     00 = current, 01 = center, 10 = left, 11 = right
  17420.  2,3    vertical position
  17421.     00 = current, 01 = center, 10 = top, 11 = bottom
  17422.  4    don't redraw screen if set
  17423.  5-7    not used
  17424. --------Q-151024-----------------------------
  17425. INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
  17426.     AX = 1024h
  17427.     BX = segment of object handle for window
  17428.           (0 = use default)
  17429. Return: ES:DI -> virtual screen
  17430.     CX = size of virtual screen in bytes
  17431.     DL = 00h text screen
  17432.          01h graphics screen
  17433. SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h
  17434. --------Q-151025-----------------------------
  17435. INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
  17436.     AX = 1025h
  17437. Return: stack switched back
  17438. Notes:    call only after having switched to internal stack with AX=101Ah
  17439.     while TopView requires many API calls to be executed while on the
  17440.       task's private stack, DESQview allows those calls to be executed
  17441.       regardless of the current stack
  17442. SeeAlso: AX=101Ah
  17443. --------Q-1510-------------------------------
  17444. INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
  17445.     AH = 10h
  17446.     AL = 26h thru 2Ah
  17447. Return: pops up "Programming error" window in DV 2.x
  17448. --------Q-15102B-----------------------------
  17449. INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK
  17450.     AX = 102Bh
  17451.     BX = segment of object handle for task
  17452. Return: nothing
  17453. Note:    forces a task which is waiting on its objectq to continue by placing
  17454.       the handle for the task on the objectq
  17455. SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h
  17456. --------Q-15102C-----------------------------
  17457. INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS
  17458.     AX = 102Ch
  17459.     ES:DI -> contents of .PIF/.DVP file (see #0353)
  17460.     BX = size of .PIF/.DVP info
  17461. Return: BX = segment of object handle for new task
  17462.          0000h on error
  17463. SeeAlso: AX=DE24h,INT 21/AH=4Bh
  17464.  
  17465. Format of .PIF/.DVP file:
  17466. Offset    Size    Description    (Table 0353)
  17467.  00h    BYTE    reserved (0)
  17468.  01h    BYTE    checksum of bytes 02h through 170h
  17469.  02h 30 BYTEs    blank-padded program title
  17470.  20h    WORD    maximum memory to allocate to partition in KB
  17471.  22h    WORD    minimum memory required in KB
  17472.  24h 64 BYTEs    ASCIZ program pathname
  17473.  64h    BYTE    default drive letter ('A',...)
  17474.  65h 64 BYTEs    ASCIZ default directory name
  17475.  A5h 64 BYTEs    ASCIZ program parameters
  17476.  E5h    BYTE    initial screen mode (0-7) (also see offset 189h)
  17477.  E6h    BYTE    number of text pages used
  17478.  E7h    BYTE    number of first interrupt to save
  17479.  E8h    BYTE    number of last interrupt to save
  17480.  E9h    BYTE    rows in virtual screen buffer
  17481.  EAh    BYTE    columns in virtual screen buffer
  17482.  EBh    BYTE    initial window position, row
  17483.  ECh    BYTE    initial window position, column
  17484.  EDh    WORD    system memory in KB
  17485.  EFh 64 BYTEs    ASCIZ shared program name
  17486. 12Fh 64 BYTEs    ASCIZ shared program data file
  17487. 16Fh    BYTE    program flags 1 (see #0354)
  17488. 170h    BYTE    flags2
  17489.         bit 6: uses command-line parameters in field at A5h
  17490.         bit 5: swaps interrupt vectors
  17491. ---information unique to .DVP files---
  17492. 171h  2 BYTEs    keys to use on open menu
  17493. 173h    WORD    size of script buffer in bytes
  17494. 175h    WORD    automatically give up CPU after this many tests for keyboard
  17495.           input in one clock tick (default 0 = never)
  17496. 177h    BYTE    nonzero = "uses own colors"
  17497. 178h    BYTE    nonzero if application swappable
  17498. 179h  3 BYTEs    reserved (0) according to Quarterdeck documentation
  17499.         in actual .DVP files, frequently 01h
  17500. 17Ch    BYTE    nonzero to automatically close on exit (see also #0356)
  17501. 17Dh    BYTE    nonzero if copy-protect floppy is required
  17502. ---information unique to DESQview 2.0+---
  17503. 17Eh    BYTE    .DVP version number
  17504.         00h DESQview v1.2+
  17505.         01h DESQview v2.0+
  17506.         02h DESQview v2.2+
  17507. 17Fh    BYTE    reserved (0)
  17508. 180h    BYTE    initial number of rows in physical window
  17509. 181h    BYTE    initial number of columns in physical window
  17510. 182h    WORD    maximum expanded memory to allow, in KB
  17511. 184h    BYTE    DVP program flags 3 (see #0355)
  17512. 185h    BYTE    keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
  17513.         (see #0357)
  17514. 186h    BYTE    number of graphics pages used
  17515. 187h    WORD    extra system memory size
  17516. 189h    BYTE    initial screen mode (FFh = default) (overrides offset E5h)
  17517. ---information unique to DESQview 2.2+---
  17518. 18Ah    BYTE    serial port usage
  17519.         FFh uses all serial ports
  17520.         00h no serial ports
  17521.         01h only COM1
  17522.         02h only COM2
  17523. 18Bh    BYTE    DVP program flags 4 (see #0356)
  17524. 18Ch    BYTE    protection level for 386 machines
  17525. 18Dh 19 BYTEs    reserved (0) for regular DESQview
  17526. ---information unique to DESQview/X 1.0---
  17527. 18Dh    BYTE    X flags
  17528.         bits 3-7: unused (0)
  17529.         bit 2: don't display wait message when opening window
  17530.         bit 1: don't display DOS window
  17531.         bit 0: (XNEWPROC) use DOS client layer (DOS-to-X)
  17532.                (NEWPROC) inherit DOS client layer usage
  17533. 18Eh    BYTE    X keyboard behavior (0-3)
  17534. 18Fh    BYTE    font scaling
  17535.         00h fixed fonts
  17536.         01h scalable fonts
  17537. 190h 10 BYTEs    reserved (0)
  17538. 19Ah    WORD    length of data follownig XDVP signature
  17539. 19Ch  4 BYTEs    signature "XDVP"
  17540. 1A0h  N BYTEs    list of variable length records (see #0358)
  17541.  
  17542. Bitfields for .PIF/.DVP program flags 1:
  17543. Bit(s)    Description    (Table 0354)
  17544.  7    writes text directly to screen
  17545.  6    runs in foreground only (see also #0353 offset 184h)
  17546.  5    uses math coprocessor
  17547.  4    accesses system keyboard buffer directly
  17548.  3-1    reserved (0)
  17549.  0    swappable
  17550. SeeAlso: #0353,#0355,#0356
  17551.  
  17552. Bitfields for .DVP program flags 3:
  17553. Bit(s)    Description    (Table 0355)
  17554.  7    automatically assign window position
  17555.  5    maximum memory value has been specified
  17556.  4    disallow "Close" command
  17557.  3    foreground-only when doing graphics
  17558.     set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  17559.  2    don't virtualize (see also #0356)
  17560.  1    foreground-only during DOS calls
  17561.     set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  17562. SeeAlso: #0353,#0354,#0356
  17563.  
  17564. Bitfields for .DVP program flags 4:
  17565. Bit(s)    Description    (Table 0356)
  17566.  7    automatically close application on exit if .COM or .EXE    specified
  17567.     (see also #0353 offset 17Ch)
  17568.  6    swappable if not using serial ports
  17569.  5    start program with window hidden (v2.26+)
  17570.  4    start program in background (v2.26+)
  17571.  3    virtualize text (see also #0355)
  17572.  2    virtualize graphics (see also #0355)
  17573.  1    share CPU when foreground
  17574.  0    share EGA when foreground and zoomed
  17575. SeeAlso: #0353,#0354,#0355
  17576.  
  17577. Bitfields for DESQview keyboard conflict level:
  17578. Bit(s)    Description    (Table 0357)
  17579.  3    save/restore entire INT 09 handler state every taskswtch
  17580.  2    take special precautions for programs which read the BIOS keyboard
  17581.       buffer directly from memory
  17582.  1    never indicate keystroke available during scripts/xfers
  17583.  0    only indicate keystroke available every sixth poll
  17584. SeeAlso: #0353
  17585.  
  17586. Format of DESQview/X variable length record:
  17587. Offset    Size    Description    (Table 0358)
  17588.  00h    WORD    length of following record, 0000h if end of record list
  17589.  02h    BYTE    record type
  17590.         01h script filename, up to 64 characters
  17591.         02h command-line parameters (allows >64 characters on cmdline)
  17592.         03h environment inheritance
  17593.         04h environment string
  17594.         05h starting window position
  17595. ---types 01h,02h,04h---
  17596.  03h  N BYTEs    ASCII data
  17597. ---type 03h---
  17598.  03h    BYTE    inheritance
  17599.         00h do not inherit
  17600.         01h inherit environment
  17601. ---type 05h---
  17602.  03h  N BYTEs    ASCII copy of fields as typed into DVPMAN, separated by commas:
  17603.         starting row, starting column, starting height, starting width
  17604. Note:    if there are multiple occurrences of record types 01h, 02h, or 03h,
  17605.       only the last instance of each type is used; multiple occurrences of
  17606.       type 04h are concatenated
  17607. SeeAlso: #0353
  17608. --------Q-15102D-----------------------------
  17609. INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL
  17610.     AX = 102Dh
  17611.     BL = subfunction
  17612.          00h determine whether using keyboard mouse
  17613.         Return: BL = 00h using real mouse
  17614.                  01h using keyboard mouse
  17615.          01h turn keyboard mouse on
  17616.          02h turn keyboard mouse off
  17617. --------Q-15102E-----------------------------
  17618. INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY
  17619.     AX = 102Eh
  17620.     BX = number of bytes
  17621. Return: AX = status
  17622.         0000h successful
  17623.         ES:DI -> allocated system memory (see #0359)
  17624.         0001h failed
  17625.         ES:DI = 0000h:0000h
  17626. Note:    under DV 2.42, this call is identical to AX=1001h
  17627. SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch
  17628.  
  17629. Format of DESQview system memory block header:
  17630. Offset    Size    Description    (Table 0359)
  17631.  00h    WORD    segment of next header or 0000h
  17632.  02h    WORD    segment of previous header or 0000h
  17633.  04h    WORD    size of block in paragraphs, including header
  17634.  06h    BYTE    availability flag (00h in use, 01h free)
  17635. Note:    this header is located one paragraph before the memory block proper
  17636. SeeAlso: #0349
  17637. --------Q-1511-------------------------------
  17638. INT 15 - TopView commands
  17639.     AH = 11h
  17640.     AL = various (except 17h)
  17641. Return: varies by function
  17642. Note:    in DESQview 2.x, these function calls are identical to AH=DEh, so
  17643.       see those below
  17644. SeeAlso: AX=DE00h,AX=DE22h,AX=DE30h
  17645. --------T-1511-------------------------------
  17646. INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
  17647.     AH = 11h
  17648.     STACK:    DWORD    pointer to ASCIZ string containing a VMiX shell
  17649.             request (max len = 127)
  17650. Return: AX = status (SYS_OK or SYS_ERROR)
  17651. SeeAlso: AH=0Ch"VMiX"
  17652. --------T-1511-------------------------------
  17653. INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
  17654.     AH = 11h
  17655. Note:    disables the Alt-Z MultiDOS command/program-selection hotkey
  17656. SeeAlso: AH=12h"MultiDOS"
  17657. Index:    hotkeys;MultiDOS Plus
  17658. --------Q-151117BX0000-----------------------
  17659. INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  17660.     AX = 1117h
  17661.     BX = 0000h    get current mapping context without setting
  17662.          nonzero    set new mapping context
  17663. Return: BX = mapping context in effect before call
  17664.     interrupts enabled
  17665. Notes:    this function differs from AX = DE17h for DESQview v2.20 through 2.25
  17666.     mapping contexts determine conventional-memory addressability; setting
  17667.       a mapping context ensures that the associated program and data areas
  17668.       are in memory for access.  Usable by drivers, TSRs and shared
  17669.       programs.
  17670.     caller need not be running under DESQview, but must ensure that the
  17671.       stack in use will not be mapped out by the call
  17672. SeeAlso: AX=DE17h,INT 2F/AX=1685h
  17673. --------m-1511DE-----------------------------
  17674. INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
  17675.     AX = 11DEh
  17676. Return: CF clear if installed
  17677.         AX = segment at which QEXT.SYS is located
  17678. Desc:    QEXT.SYS is Quarterdeck's HMA manager for DESQview; more recent
  17679.       versions also implement the XMS standard
  17680. Note:    a private entry point (see #0360) may be found by searching the
  17681.       beginning of the returned segment for the signature string
  17682.       "QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately
  17683.       prior to the signature contains the QEXT version number in BCD,
  17684.       and the word prior to that contains the offset within the QEXT
  17685.       code segment of the private entry point
  17686. SeeAlso: INT 2F/AX=4310h"XMS",INT 67/AH=3Fh
  17687.  
  17688. (Table 0360)
  17689. Call QEXT.SYS private entry point with:
  17690.     AH = 00h ???
  17691.     AH = nonzero ???
  17692. --------!---Section--------------------------
  17693. Interrupt List, part 3 of 16
  17694. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
  17695. --------T-1512-------------------------------
  17696. INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
  17697.     AH = 12h
  17698.     STACK:    WORD    process ID
  17699. Return: AX = status (SYS_OK or SYS_ERROR)
  17700. SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"
  17701. --------T-1512-------------------------------
  17702. INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
  17703.     AH = 12h
  17704. Note:    enables the Alt-Z MultiDOS command/program-selection hotkey
  17705. SeeAlso: AH=11h"MultiDOS"
  17706. Index:    hotkeys;MultiDOS Plus
  17707. --------Q-1512--BH00-------------------------
  17708. INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
  17709.     AH = 12h
  17710.     BH = 00h
  17711.     BL = which handle to return
  17712.         00h handle in DWORD on top of stack
  17713.         01h current task's window handle
  17714.         02h given task's mailbox handle (task's handle on stack)
  17715.         03h current task's mailbox handle
  17716.         04h given task's keyboard handle (task's handle on stack)
  17717.         05h current task's keyboard object handle
  17718.         06h given task's OBJECTQ handle (task's handle on stack)
  17719.         07h current task's OBJECTQ handle
  17720.         08h      \
  17721.           thru > return 0000:0000 under DV < 2.26
  17722.         10h      /
  17723.         0Ch (2.26+) task owning object with handle in DWORD on top of stack
  17724.         0Dh (2.26+) task handle of owner (parent) of current task
  17725. Return: DWORD on top of stack is object handle
  17726. Note:    BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
  17727.       mailbox, panel, pointer, and timer objects) or is an orphan (task,
  17728.       window)
  17729. SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h
  17730. --------Q-1512--BH01-------------------------
  17731. INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
  17732.     AH = 12h
  17733.     BH = 01h
  17734.     BL = object type to create (see #0361)
  17735.     STACK: (only if window object or WINDOW class)
  17736.            DWORD address to jump to (no new task if high word == 0)
  17737.            DWORD (reserved) 0 = non-task window, FFFFh = task window
  17738.            DWORD bytes for task's private stack (FFFFh == default of 0100h)
  17739.            DWORD bytes system memory for input buffer for READ/READN
  17740.             (0 == none, -1 == default--same as logical window size)
  17741.            DWORD window size, columns
  17742.            DWORD window size, rows
  17743.            DWORD length of window title
  17744.            DWORD address of window title
  17745. Return: DWORD on top of stack is new object handle
  17746. Notes:    if a new task is created, it is started with
  17747.       AX = BX = SI = DI = BP = 0
  17748.       DX:CX = handle of parent task
  17749.       DS = ES = SS = segment of private stack (and new task's handle)
  17750.     new windows are orphans, inherit the colors/hidden status of the
  17751.       creating task's window, and are placed in the upper left hand corner
  17752.       of the screen but not automatically redrawn
  17753.     new keyboards are closed, and have all object bits cleared except for
  17754.       the hardware cursor bit
  17755. SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h
  17756.  
  17757. (Table 0361)
  17758. Values for TopView/DESQview object type (for creation):
  17759.  00h    (DV 2.0x only) handle is DWORD on top of stack
  17760.  01h    (DV 2.0x only) use task's window handle
  17761.  02h    (DV 2.0x only) given task's mailbox (task's handle on stack)
  17762.  03h    (DV 2.0x only) current task's mailbox
  17763.  04h    (DV 2.0x only) given task's keyboard (task's handle on stack)
  17764.  05h    (DV 2.0x only) current task's keyboard object
  17765.  08h    WINDOW class
  17766.  09h    MAILBOX class
  17767.  0Ah    KEYBOARD class
  17768.  0Bh    TIMER object (counts down 32-bit time in 10ms increments)
  17769.  0Fh    POINTER object
  17770.  10h    PANEL object
  17771. --------Q-1512--BH02-------------------------
  17772. INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
  17773.     AH = 12h
  17774.     BH = 02h
  17775.     BL = object
  17776.         00h handle in DWORD on top of stack
  17777.         window: close window and free
  17778.         timer: free timer
  17779.         panel: free panel object
  17780.         pointer: free pointer
  17781.         01h task's window handle - kills task, never returns
  17782.         02h given task's mailbox (task's handle on top of stack)
  17783.         03h current task's mailbox
  17784.         04h given task's keyboard (task's handle on top of stack)
  17785.         05h current task's keyboard object
  17786. Return: STACK popped if handle passed on stack
  17787. Notes:    when a window is freed, its keyboard and pointer objects are freed;
  17788.       task windows also free any mailbox, objectq, and panel objects held
  17789.       by the task and any child tasks
  17790.     if the keyboard being freed is the default keyboard for a task, this
  17791.       call is equivalent to CLOSE
  17792.     panel and pointer objects are automatically closed if open
  17793. SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h
  17794. --------Q-1512--BH03-------------------------
  17795. INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
  17796.     AH = 12h
  17797.     BH = 03h
  17798.     BL = object
  17799.         00h mailbox handle in DWORD on top of stack
  17800.         02h sender of last msg read from mailbox (task's handle on stack)
  17801.         03h sender of last msg read from current task's mailbox
  17802. Return: DWORD on stack is task handle of message sender
  17803. SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h
  17804. --------Q-1512--BH03-------------------------
  17805. INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS
  17806.     AH = 12h
  17807.     BH = 03h
  17808.     BL = window to be connected
  17809.         00h handle of window to be attached in DWORD on top of stack
  17810.         01h attach current task's main window
  17811.     STACK: DWORD handle of window to attach to or 00000000h to detach
  17812. Return: STACK popped
  17813. Notes:    when two windows are connected, both will move if the user moves either
  17814.     multiple windows may be attached to a single window, but each window
  17815.       may only be attached to one window at a time
  17816. SeeAlso: AH=12h/BH=83h
  17817. --------Q-1512--BX0300-----------------------
  17818. INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
  17819.     AH = 12h
  17820.     BX = 0300h
  17821.     STACK: DWORD handle of panel object (see #0362)
  17822. Return: STACK: DWORD length of directory (always multiple of 14 bytes)
  17823.            DWORD address of directory
  17824. Note:    a null string is returned if the object is not open
  17825. SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h
  17826.  
  17827. Format of TopView panel file:
  17828. Offset    Size    Description    (Table 0362)
  17829.  00h  2 BYTEs    C0h C3h
  17830.  02h    BYTE    number of panels in file
  17831.  03h    for each panel in file:
  17832.         8 BYTEs  blank-padded panel name
  17833.           DWORD  panel offset in file
  17834.           WORD   panel length
  17835.     data for panels (each consists of one or more window/query/manager
  17836.       streams); first byte of each panel must be 1Bh, fifth byte must be
  17837.       E5h
  17838. --------Q-1512--BH04-------------------------
  17839. INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
  17840.     AH = 12h
  17841.     BH = 04h
  17842.     BL = window to read from
  17843.         00h handle is DWORD on top of stack
  17844.         01h use calling task's default window
  17845.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  17846.         0Dh (DV 2.26+) default window of parent task of current task
  17847. Return: STACK:    DWORD number of bytes read
  17848.         DWORD address of buffer
  17849. Notes:    reading starts at the current logical cursor position; the cursor is
  17850.       updated to point at the character following the last one read
  17851.     any translucent blanks (FFh) which are visible on screen are changed
  17852.       to the character which is seen through them
  17853.     the string produced by the read is placed in an input buffer which may
  17854.       be reused by the next READ or READN of a window
  17855.     window stream opcodes D8h and D9h determine whether the read returns
  17856.       characters or attributes
  17857. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h
  17858. --------Q-1512--BH04-------------------------
  17859. INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
  17860.     AH = 12h
  17861.     BH = 04h
  17862.     BL = object
  17863.         00h handle is DWORD on top of stack
  17864.         mailbox: wait for and get next message
  17865.         keyboard: wait for and get pointer to next input buffer
  17866.         pointer: wait for and get next message
  17867.         02h get next message from mailbox (task's handle on top of stack)
  17868.         03h get next message from current task's mailbox
  17869.         04h get the next input from keyboard (handle on top of stack)
  17870.         05h get the next input from task's default keyboard
  17871.         06h wait for input from any object in OBJECTQ (handle on stack)
  17872.         07h wait for input from any object in task's default OBJECTQ
  17873. Return: STACK: (if objectq) DWORD handle of object with input
  17874.            (otherwise)  DWORD number of bytes
  17875.                 DWORD address of pointer message (see #0363)
  17876. Notes:    for a keyboard in keystroke mode, the input buffer is a single byte
  17877.       containing the character code as returned by the BIOS; the BIOS scan
  17878.       code is available via the STATUS call if the character is zero
  17879.     for a keyboard in field mode, the input buffer format is determined
  17880.       by the field table header for the window the keyboard is attached to
  17881.     keyboard input buffers and mailbox message buffers may be invalidated
  17882.       by the next READ, ERASE, CLOSE, or FREE message to the same object
  17883. SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h
  17884.  
  17885. Format of DESQview pointer message:
  17886. Offset    Size    Description    (Table 0363)
  17887.  00h    WORD    row
  17888.  02h    WORD    column
  17889.  04h    BYTE    status (see #0364)
  17890.  05h    BYTE    field number or zero (APILEVEL >= 2.00 only)
  17891.  
  17892. Bitfields for DESQview pointer status:
  17893. Bit(s)    Description    (Table 0364)
  17894.  7-2    number of clicks-1 if multiple-click mode active
  17895.  7    set when press/release mode active and button pressed
  17896.  6    set when press/release mode active and button released
  17897.  1-0    button pressed (00=none,01=button1,10=button2)
  17898. SeeAlso: #0363
  17899. --------Q-1512--BX0400-----------------------
  17900. INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
  17901.     AH = 12h
  17902.     BX = 0400h
  17903.     STACK: DWORD timer's handle
  17904. Return: after timer expires
  17905.     STACK: DWORD time in 1/100 sec after midnight when timer expired
  17906. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h
  17907. --------Q-1512--BX0400-----------------------
  17908. INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
  17909.     AH = 12h
  17910.     BX = 0400h
  17911.     STACK: DWORD handle of panel object
  17912.            DWORD window's handle (or 0 for current task's window)
  17913.            DWORD length of panel name
  17914.            DWORD pointer to panel name
  17915. Return: STACK: DWORD handle of window which was used
  17916.            DWORD handle of keyboard or 0
  17917. Notes:    status of APPLY may be checked with STATUS message
  17918.     panel MUST have the following format
  17919.       first byte must be 1Bh (i.e. must start with a stream)
  17920.       first opcode in stream must be E5h
  17921.         single byte arg of opcode is interpreted thus:
  17922.           bits 7,6    11 means create new window
  17923.             10 means create new field table for existing window
  17924.             01 means use existing window and field table
  17925.           bit 5 if set, panel contains a field table
  17926.             (creates a new keyboard and puts it in field mode)
  17927.           bit 4 if set, panel contains input fields
  17928.           bit 3 if set, panel contains select fields but no input fields
  17929.     if the panel contains input or select fields, a keyboard handle is
  17930.       returned; either the window's current open keyboard or a
  17931.       newly-created keyboard object.  The caller should read that keyboard
  17932.       to obtain input from the panel.
  17933. SeeAlso: AH=12h/BH=84h
  17934. --------Q-1512--BH05------------------------
  17935. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
  17936.     AH = 12h
  17937.     BH = 05h
  17938.     BL = object
  17939.         00h handle is DWORD on top of stack
  17940.         timer: start timer to end at a specified time
  17941.         keyboard: add input buffer to queue
  17942.         pointer: move pointer icon to specified position
  17943.         02h send message by value/status=0 to mbox (task's handle on stack)
  17944.         03h send message by value/status=0 to current task's mailbox
  17945.         04h add input buffer to KEYBOARD queue (handle on top of stack)
  17946.         05h add input buffer to task's default KEYBOARD queue
  17947.         06h add an object to OBJECTQ (handle on top of stack)
  17948.         07h add an object to task's default OBJECTQ
  17949.     STACK: (if mailbox)  DWORD length
  17950.                  DWORD address
  17951.            (if keyboard) DWORD status (scan code in keystroke mode)
  17952.                  DWORD length (should be 1 in keystroke mode)
  17953.                  DWORD address
  17954.            (if objectq)  DWORD handle of object to add
  17955.            (if timer)    DWORD 1/100ths seconds since midnight (actually
  17956.                    only accurate to 1/18 sec)
  17957.            (if pointer)  DWORD column relative to origin of window
  17958.                  DWORD row relative to origin of window
  17959. Return: STACK popped
  17960. Notes:    under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  17961.     the data and status written to a keyboard object must match the format
  17962.       returned by the keyboard object in the current mode
  17963.     the pointer position is scaled according to the current scaling factors
  17964. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  17965. --------Q-1512--BH05-------------------------
  17966. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
  17967.     AH = 12h
  17968.     BH = 05h
  17969.     BL = window to write to
  17970.         00h DWORD on top of stack is window handle
  17971.         01h write string to task's default window
  17972.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  17973.         0Dh (DV 2.26+) default window of parent of current task
  17974.     STACK: DWORD object handle if handle passed on stack
  17975.            DWORD total length of string (high word == 0)
  17976.            DWORD address of string to display (see #0365)
  17977. Return: indicated actions performed
  17978.     a. non-control characters are displayed (opcodes DEh and DFh control
  17979.        whether the attributes are left or changed to the current attrib)
  17980.     b. CR/LF/BS/Tab cause the usual cursor movement
  17981.     c. ESC starts a data structure with additional commands if following
  17982.        byte is less than 20h; otherwise, it is written to the window
  17983.     STACK:    DWORD handle of new window if window stream opcode E6h
  17984.         else nothing (arguments have been popped)
  17985. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  17986.  
  17987. Format of stream data structure:
  17988. Offset    Size    Description    (Table 0365)
  17989.  00h    BYTE    1Bh magic value identifying start of stream
  17990.  01h    BYTE    stream type (00h, 01h, 10h, 14h-1Fh legal)
  17991.         (see #0366,#0372,#0373,#0374)
  17992.  02h    WORD    length of remainder of stream in bytes
  17993.     var-length fields follow, each an OPCODE followed by
  17994.          zero or more args
  17995.  
  17996. (Table 0366)
  17997. Values for MODE 00h (set or display values) "WINDOW STREAM" opcodes:
  17998. Opcodes:args
  17999.  00h  display 20h blanks with the default attribute
  18000.  01h-1Fh display OPCODE blanks with the default attribute
  18001.  20h  display char with default attribute 20h times
  18002.     BYTE char to repeat
  18003.  21h-3Fh display char with default attribute OPCODE-20h times
  18004.     BYTE char to repeat
  18005.  40h  display 20h blanks with specified attribute
  18006.     BYTE attribute of blanks
  18007.  41h-5Fh display OPCODE-40h blanks with specified attribute
  18008.     BYTE attribute of blanks
  18009.  60h  display next 20h characters
  18010.     20h BYTEs characters to display
  18011.  61h-7Fh display next OPCODE-60h characters
  18012.     N BYTEs characters to display
  18013.  80h-87h display N blanks with default attribute
  18014.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  18015.           [000h means 800h]
  18016.  88h-8Fh display N copies of the character
  18017.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  18018.           [000h means 800h]
  18019.     BYTE character to repeat
  18020.  90h-97h display N blanks with specified attribute
  18021.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  18022.           [000h means 800h]
  18023.     BYTE attribute
  18024.  98h-9Fh display string at logical cursor pos
  18025.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  18026.           [000h means 800h]
  18027.     N BYTEs string to display
  18028.  A0h  set logical cursor row
  18029.     BYTE row number (0 is top)
  18030.  A1h  set logical cursor column
  18031.     BYTE column number (0 is leftmost)
  18032.  A2h  set top edge of scrolling region
  18033.     BYTE row
  18034.  A3h  set left edge of scrolling region
  18035.     BYTE column
  18036.  A4h  set row of physical window position
  18037.     BYTE line
  18038.  A5h  set column of physical window position
  18039.     BYTE column
  18040.  A6h  set height of physical window
  18041.     BYTE number of rows
  18042.  A7h  set width of physical window
  18043.     BYTE number of columns
  18044.  A8h  set viewport row
  18045.     BYTE row
  18046.  A9h  set viewport column
  18047.     BYTE column
  18048.  AAh  set virtual screen height [contents of window unpredictable after]
  18049.     BYTE rows
  18050.  ABh  set virtual screen width [contents of window unpredictable after]
  18051.     BYTE columns
  18052.  ACh-AEh unused
  18053.  AFh  set compatible/preferred video modes
  18054.     BYTE compatibility/preference mask
  18055.         bit 7    compatible with monochrome
  18056.         bit 6    compatible with color text, EGA/VGA graphics
  18057.         bit 5    compatible with medium-resolution CGA graphics
  18058.         bit 4    compatible with high-resolution CGA graphics
  18059.         bit 3    prefer monochrome
  18060.         bit 2    prefer color text, EGA/VGA graphics
  18061.         bit 1    prefer medium-resolution CGA graphics
  18062.         bit 0    prefer high-resolution CGA graphics
  18063.  B0h  move logical cursor down
  18064.     BYTE number of rows (signed, negative values move up)
  18065.         [if rows=0 and hardware cursor owner, update hardware cursor]
  18066.  B1h  move logical cursor right
  18067.     BYTE number of columns (signed, negative values move left)
  18068.         [if cols=0 and hardware cursor owner, update hardware cursor]
  18069.  B2h  shift top edge of scrolling region
  18070.     BYTE number of rows (signed)
  18071.  B3h  shift left edge of scrolling region
  18072.     BYTE number of columns (signed)
  18073.  B4h  shift physical window down
  18074.     BYTE number of lines (signed)
  18075.  B5h  shift physical window right
  18076.     BYTE number of columns (signed)
  18077.  B6h  expand physical window vertically
  18078.     BYTE number of lines (signed)
  18079.  B7h  expand physical window horizontally
  18080.     BYTE number of columns (signed)
  18081.  B8h  adjust viewport row
  18082.     BYTE number of rows (signed)
  18083.  B9h  adjust viewport column
  18084.     BYTE number of columns (signed)
  18085.  BAh  adjust virtual screen height [contents of window unpredict after]
  18086.     BYTE number of rows to increase (signed)
  18087.  BBh  adjust virtual screen width [contents of window unpredictbl after]
  18088.     BYTE number of columns to increase (signed)
  18089.  BCh-BFh reserved (currently unused)
  18090.  C0h  set logical cursor position
  18091.     BYTE row number (0 is top border)
  18092.     BYTE column number (0 is left border)
  18093.  C1h  set top left corner of scrolling region
  18094.     BYTE row
  18095.     BYTE column
  18096.  C2h  set physical window pos
  18097.     BYTE upper left row (no top border if 0)
  18098.     BYTE upper left column (no left border if 0)
  18099.  C3h  set current window size
  18100.     BYTE number of rows
  18101.     BYTE number of columns
  18102.  C4h  set upper left corner of viewport (portion of virtual screen displayed
  18103.       in window)
  18104.     BYTE row
  18105.     BYTE column
  18106.  C5h  set size of virtual screen [contents unpredictable afterwards]
  18107.     BYTE number of rows
  18108.     BYTE number of columns
  18109.  C6h  unused
  18110.  C7h  unused
  18111.  C8h  set logical cursor relative to current position
  18112.     BYTE number of rows to move down (signed)
  18113.     BYTE number of columns to move right (signed)
  18114.         [if rows=cols=0 and hardware cursor owner, update hardw cursor]
  18115.  C9h  shift top left corner of scrolling region
  18116.     BYTE number of rows (signed)
  18117.     BYTE number of columns (signed)
  18118.  CAh  set window pos relative to current position
  18119.     BYTE number of rows to shift down (signed)
  18120.     BYTE number of columns to shift right (signed)
  18121.  CBh  set window size relative to current size
  18122.     BYTE number of rows to expand (signed)
  18123.     BYTE number of cols to expand (signed)
  18124.  CCh  shift viewport relative to current position
  18125.     BYTE rows to shift (signed)
  18126.     BYTE cols to shift (signed)
  18127.  CDh  resize virtual screen
  18128.     BYTE number of rows to expand (signed)
  18129.     BYTE number of columns to expand (signed)
  18130.  CEh  scroll text when using E8h-EBh/F8h-FBh opcodes (default)
  18131.  CFh  scroll attributes when using  E8h-EBh/F8h-FBh opcodes
  18132.  D0h  allow window frame to extend beyond screen
  18133.  D1h  always display a complete frame, even if window extends beyond edge of
  18134.       screen
  18135.  D2h  allow DV to change logical colors on video mode switch (default)
  18136.  D3h  application changes logical attributes
  18137.  D4h  window is visible [must redraw to actually make visible]
  18138.  D5h  window is hidden [must redraw to actually remove]
  18139.  D6h  window has frame (default)
  18140.  D7h  window unframed [must redraw to actually remove frame]
  18141.  D8h  READ/READN will read characters from window (default)
  18142.  D9h  READ/READN will read attributes from window
  18143.  DAh  use logical attributes, which may be remapped (see #0367)
  18144.  DBh  use physical attributes for characters
  18145.  DCh  enable special actions for control characters (default)
  18146.  DDh  disable special control char handling, all chars displayable by BIOS TTY
  18147.       call
  18148.  DEh  write both character and attribute (default)
  18149.  DFh  write character only, leave attribute untouched
  18150.  E0h  repeat following commands through E1h opcode
  18151.     BYTE number of times to repeat (00h means 256 times)
  18152.  E1h  end of commands to repeat, start repeating them
  18153.  E2h  set current output color
  18154.     BYTE color
  18155.  E3h  clear virtual screen from scroll origin to end using current color
  18156.  E4h  redraw window
  18157.  E5h  select menu style
  18158.     BYTE style (normally 18h)
  18159.         bits 5,4 = 01 use two-letter menu entries for remainder of
  18160.           this stream
  18161.  E5h  (panel file only)
  18162.     BYTE modifier
  18163.         bits 7,6 = 11 panel stream creates new window
  18164.              = 10 panel defines new field table for existing window
  18165.              = 01 panel stream uses existing window & field table
  18166.         bit 5 = 1 stream contains a field table (create kyboard object)
  18167.         bit 4 = 1 stream defines input fields (create keyboard object)
  18168.         bit 3 = 1 stream defines select fields but not input fields
  18169.         bit 2 = 1 stream defines exclusive input window (DV 2.2)
  18170.         bit 1 reserved
  18171.         bit 0 reserved
  18172.  E6h  create new window and perform rest of manipulations in new window
  18173.     BYTE number of rows
  18174.     BYTE number of columns
  18175.     Return: DWORD object handle of new window returned on stack at end
  18176.     Note:    the window is created with a physical size of 0x0 at the
  18177.           same position as the window to which this stream was sent
  18178.  E7h  no operation
  18179.  E8h  scroll area up (top left corner defined by opcode C1h)
  18180.     BYTE height
  18181.     BYTE width
  18182.  E9h  scroll area down (top left corner defined by opcode C1h)
  18183.     BYTE height
  18184.     BYTE width
  18185.  EAh  scroll area left (top left corner defined by opcode C1h)
  18186.     BYTE height
  18187.     BYTE width
  18188.  EBh  scroll area right (top left corner defined by opcode C1h)
  18189.     BYTE height
  18190.     BYTE width
  18191.  ECh  set logical attributes for window contents
  18192.     BYTE video modes command applies to
  18193.         bit 7    monochrome
  18194.         bit 6    color text, EGA/VGA graphics
  18195.         bit 5    medium-resolution CGA graphics
  18196.         bit 4    high-resolution CGA graphics
  18197.     BYTE which attributes to set
  18198.         bit 7    if set, copy single following byte to indicated attribs
  18199.         bits 4-6  number of first attribute to change - 1
  18200.         bits 0-3  number of consecutive attributes to change
  18201.     N BYTEs new attributes
  18202.  EDh  set logical attributes for window frame
  18203.     BYTE video modes command applies to (also see opcode ECh)
  18204.     BYTE which attributes to set
  18205.         bit 7    if set, copy single following byte to indicated attrs
  18206.         bits 4-6  number of first attribute to change - 1
  18207.         bits 0-3  number of consecutive attributes to change
  18208.     N BYTEs new attributes
  18209.           attributes
  18210.                1 = top left corner
  18211.                2 = top right corner
  18212.                3 = bottom left corner
  18213.                4 = bottom right corner
  18214.                5 = top edge
  18215.                6 = bottom edge
  18216.                7 = left edge
  18217.                8 = right edge
  18218.  EEh  set characters for window frame
  18219.     BYTE video modes command applies to (also see opcode ECh)
  18220.     BYTE which characters to set
  18221.         bit 7    if set, copy single following byte to indicated chars
  18222.         bits 4-6  number of first character to change - 1
  18223.         bits 0-3  number of consecutive characters to change
  18224.     N BYTEs new chars (same relative position as attributes above)
  18225.  EFh  set window name
  18226.     BYTE length of name (should be in range 0 to logical screen width)
  18227.     N BYTEs name
  18228.  F0h  clear input field to blanks
  18229.     BYTE field number
  18230.  F1h  fill input field with character
  18231.     BYTE field number
  18232.     BYTE char
  18233.  F2h  set color of input field
  18234.     BYTE field number (1-N)
  18235.     BYTE attribute
  18236.  F3h  set initial contents of input field
  18237.     BYTE field number (1-N)
  18238.     N BYTEs enough chars to exactly fill field as defined by op FFh
  18239.  F4h  position cursor to start of specific input field
  18240.     BYTE field number (1-N)
  18241.  F5h  change field table entry
  18242.     BYTE field number
  18243.     7-8 BYTEs field table entry (also see opcode FFh below)
  18244.  F6h  set field type
  18245.     BYTE field number
  18246.     BYTE type
  18247.         00h inactive
  18248.         40h output field
  18249.         80h input field
  18250.         C0h deselected field
  18251.         C2h selected field
  18252.  F7h  "broadcast write"    write data to fields with program output bit set in
  18253.       the field table entry, in field number order
  18254.     N BYTEs (total length of all program output fields)
  18255.  F8h  scroll field up a line
  18256.     BYTE field number
  18257.  F9h  scroll field down a line
  18258.     BYTE field number
  18259.  FAh  scroll field left
  18260.     BYTE field number
  18261.  FBh  scroll field right
  18262.     BYTE field number
  18263.  FCh  set field table header
  18264.     6 BYTEs    field table header (see #0368)
  18265.  FDh  reset modified bit for all fields
  18266.  FEh  reset selected and modified bits for all fields
  18267.  FFh  set up input fields
  18268.     6 BYTEs    table header (see #0368)
  18269.     7/8N BYTEs the field table entries, one for each field (see #0370)
  18270.     Note:    DESQview uses and updates the actual copy of the information
  18271.           which is contained in the stream.  Thus this info must remain
  18272.           intact until after the data entry is complete.
  18273. SeeAlso: #0365,#0372
  18274.  
  18275. (Table 0367)
  18276. Values for TopView logical attributes:
  18277.  01h    normal text
  18278.  02h    highlighted normal text
  18279.  03h    help text
  18280.  04h    highlighted help text
  18281.  05h    error message
  18282.  06h    highlighted error message
  18283.  07h    emphasized text
  18284.  08h    marked text
  18285.  9-16    reverse video versions of 1-8
  18286. SeeAlso: #0366
  18287.  
  18288. Format of TopView field table header:
  18289. Offset    Size    Description    (Table 0368)
  18290.  00h    BYTE    number of fields (must be <= existing number of fields)
  18291.  01h    BYTE    screen behavior bits (see #0369)
  18292.  02h    BYTE    current input field (updated by DESQview)
  18293.  03h    BYTE    current select field (updated by DESQview)
  18294.  04h    BYTE    attribute for select fields when they are pointed at
  18295.  05h    BYTE    attribute for select fields which have been selected
  18296. SeeAlso: #0366,#0370
  18297.  
  18298. Bitfields for TopView screen behavior bits:
  18299. Bit(s)    Description    (Table 0369)
  18300.  7    reserved
  18301.  6    menu items may be selected via keyboard
  18302.  5    left mouse button in "status" mode (press anywhere in window
  18303.       immediately returns control to application)
  18304.  4    right mouse button in "status" mode
  18305.  3    select fields return contents or blanks rather than 'Y' or 'N'
  18306.  2    modified bits reset on return to application
  18307.  1-0    type of data returned
  18308.     00 no data returned on read of keyboard
  18309.     01 data returned as array of characters containing all fields packed
  18310.           together, with no field numbers
  18311.     10 data returned as numbered variable-length records for all fields
  18312.     11 data returned as numbered variable-length records for the fields
  18313.           which were modified
  18314. SeeAlso: #0366
  18315.  
  18316. Format of TopView field table entry:
  18317. Offset    Size    Description    (Table 0370)
  18318.  00h    BYTE    start row    \
  18319.  01h    BYTE    start column  \ if menu selection and start is to
  18320.  02h    BYTE    end row          / right or below end, select from kbd only
  18321.  03h    BYTE    end column   /
  18322.  04h    BYTE    field type (see #0371)
  18323.  05h    BYTE    modifier
  18324.         if type is fill-in, then bit flags to determine behavior
  18325.           bit 7     automatically enter CR when field full
  18326.           bit 6     move to next field when current field is full
  18327.           bit 5     enter text from right end (for numbers)
  18328.           bit 4     force input to uppercase
  18329.           bit 3     clear old contents on first keystroke
  18330.           bit 2     input returned when cursor moves out of
  18331.               modified field ("validate", API level 2.02+)
  18332.           bit 1     reserved
  18333.           bit 0     reserved
  18334.         if select field, first key to press to activate
  18335.           00h if have to point-&-click or is an extended-ASCII
  18336.               keystroke (only if two-key menus enabled)
  18337.  06h    BYTE    (select field only) normal color of field
  18338.  07h    BYTE    second key for select field.  This byte is present iff
  18339.           two-letter menu entries selected with opcode E5h, and in that
  18340.           case is present regardless of field type
  18341. SeeAlso: #0368
  18342.  
  18343. Bitfields for TopView field type:
  18344. Bit(s)    Description    (Table 0371)
  18345.  7,6    field class
  18346.     00 inactive (non-entry) field
  18347.     01 echos keystrokes input to make menu selection
  18348.     10 fill-in field
  18349.     11 select field
  18350.  5    field can be filled by broadcast write (F7h opcode)
  18351.  4    reserved
  18352.  3    reserved
  18353.  2    reserved
  18354.  1    set if field selected
  18355.  0    set if field modified
  18356. SeeAlso: #0370
  18357.  
  18358. (Table 0372)
  18359. Values for MODE 01h "QUERY STREAM" opcodes:
  18360. (valid only for those opcodes listed here)
  18361.  A0h return logical cursor row in next byte
  18362.  A1h return logical cursor column in next byte
  18363.  A2h return top row of scrolling region in next byte
  18364.  A3h return left column of scrolling region in next byte
  18365.  A4h return row of physical window origin in next byte
  18366.  A5h return column of physical window origin in next byte
  18367.  A6h return height of physcial window in next byte
  18368.  A7h return width of physical window in next byte
  18369.  A8h return row of viewport origin in next byte
  18370.  A9h return column of viewport origin in next byte
  18371.  AAh return height of virtual screen in next byte
  18372.  ABh return width of virtual screen in next byte
  18373.  AFh return current video mode in next byte
  18374.  C0h return current logical cursor position in next two bytes
  18375.  C1h return top left corner of scrolling region in next two bytes
  18376.  C2h return current window position in next two bytes
  18377.  C3h return current window size in next two bytes
  18378.  C4h return current viewport origin in next two bytes
  18379.  C5h return current virtual screen size in next two bytes
  18380.  D0h \ overwritten with D0h if frames may fall off screen edge
  18381.  D1h /               D1h if frames always displayed entirely
  18382.  D2h \ overwritten with D2h if DESQview controls color palette
  18383.  D3h /               D3h if application changes color palette
  18384.  D4h \ overwritten with D4h if window visible
  18385.  D5h /               D5h if window hidden
  18386.  D6h \ overwritten with D6h if window has frame
  18387.  D7h /               D7h if window unframed
  18388.  D8h \ overwritten with D8h if reading characters from window
  18389.  D9h /               D9h if reading attributes from window
  18390.  DAh \ overwritten with DAh if using logical attributes
  18391.  DBh /               DBh if using physical attributes
  18392.  DCh \ overwritten with DCh if TTY control char interpretation on
  18393.  DDh /               DDh if TTY control char interpretation off
  18394.  DEh \ overwritten with DEh if writing both characters and attributes
  18395.  DFh /               DFh if leaving attributes untouched
  18396.  E2h return current color in next byte
  18397.  ECh get logical attributes for window contents
  18398.     BYTE execute call if currently in specified video mode
  18399.         bit 7    monochrome
  18400.         bit 6    color text, EGA/VGA graphics
  18401.         bit 5    medium-resolution CGA graphics
  18402.         bit 4    high-resolution CGA graphics
  18403.     BYTE which attributes to get
  18404.         bit 7    unused???
  18405.         bits 4-6 first attribute to get - 1
  18406.         bits 0-3 number of consecutive attributes
  18407.     N BYTEs buffer to hold attributes
  18408.  EDh get logical attributes for window frame
  18409.     BYTE execute call if currently in video mode (also see opcode ECh)
  18410.     BYTE which attributes to get
  18411.         bit 7    unused???
  18412.         bits 4-6 first attribute to get - 1
  18413.         bits 0-3 number of consecutive attributes
  18414.     N BYTEs buffer to hold attributes
  18415.  EEh get characters for window frame
  18416.     BYTE execute call if currently in video mode (also see opcode ECh)
  18417.     BYTE which attributes to get
  18418.         bit 7    unused???
  18419.         bits 4-6 first char to get - 1
  18420.         bits 0-3 number of consecutive chars
  18421.     N BYTEs buffer to hold chars
  18422.  EFh return first N characters of current window name
  18423.     BYTE    max length of returned name
  18424.     N BYTEs buffer to hold window name
  18425.  F3h return contents of specified field
  18426.     BYTE field number
  18427.     N BYTEs buffer to hold field contents (size equal to field size)
  18428.  F5h get field table entry
  18429.     BYTE field number
  18430.     7-8 BYTEs buffer to hold field table entry (see #0370)
  18431.     Notes:    DV < 2.26 always returns 7 bytes
  18432.         DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field table
  18433.           is using 8-byte entries and eighth byte after    F5h is E7h
  18434.           (NOP); otherwise, 7 bytes are returned
  18435.         DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes depending
  18436.           on the field table entry size
  18437.  F6h get type of a field
  18438.     BYTE field number
  18439.     BYTE type
  18440.  FCh get field table header
  18441.     6 BYTEs buffer to store field table header (see #0368)
  18442. SeeAlso: #0365,#0373
  18443.  
  18444. (Table 0373)
  18445. Values for MODE 10h "MANAGER STREAM" opcodes (valid only for those listed):
  18446.  00h allow window to be moved horizontally
  18447.  01h allow window to be moved vertically
  18448.  02h allow window to change width
  18449.  03h allow window to change height
  18450.  04h allow window to be scrolled horizontally
  18451.  05h allow window to be scrolled vertically
  18452.  06h allow "Close Window" menu selection for application
  18453.  07h allow "Hide Window" menu selection for application
  18454.  08h allow application to be suspended ("Rearrange/Freeze")
  18455.  0Eh allow "Scissors" menu
  18456.  10h allow DESQview main menu to be popped up
  18457.  11h allow "Switch Windows" menu
  18458.  12h allow "Open Window" menu
  18459.  13h allow "Quit" menu selection
  18460.  20h-33h opposite of 00h-13h, disallow specified action
  18461.  40h notify if horizontal position of window changes
  18462.  41h notify if vertical position of window changes
  18463.  42h notify if width of window changes
  18464.  43h notify if height of window changes
  18465.  44h notify if window scrolled horizontally
  18466.  45h notify if window scrolled vertically
  18467.  46h notify if window is closed--program has to clean up and exit itself
  18468.  47h notify if window is hidden
  18469.  48h notify if "?" on main menu selected
  18470.  49h notify if pointer message sent to window
  18471.  4Ah notify if window is placed in foreground
  18472.  4Bh notify if window is placed in background
  18473.  4Ch notify if video mode changes
  18474.  4Dh notify if "Scissors" menu "Cut" option selected
  18475.  4Eh notify if "Scissors" menu "Copy" option selected
  18476.  4Fh notify if "Scissors" menu "Paste" option selected
  18477.  50h notify if DESQview main menu about to pop up
  18478.  51h notify if DESQview main menu popped down
  18479.  60h-71h     opposite of 40h-51h: don't notify on specified event
  18480.  84h attach window to parent task's window (both move together)
  18481.  85h detach window from parent task's window (may move independently)
  18482.  86h disable background operation for application
  18483.  87h enable running in background
  18484.  88h set minimum size of physical window
  18485.     BYTE rows
  18486.     BYTE columns
  18487.  89h set maximum size of physical window
  18488.     BYTE rows
  18489.     BYTE cols
  18490.  8Ah set primary asynchronous notification routine (see #0375)
  18491.     DWORD address of routine, 0000h:0000h means none (see also below)
  18492.  8Bh set async notification parameter
  18493.     DWORD 32-bit value passed to 8Ah async routine in DS:SI
  18494.  ACh (DV2.2+) perform regular select field attribute processing
  18495.  ADh (DV2.2+) protect attributes in selected field from being lost
  18496.  AEh make window default notify window for owning app (API level 2.00+)
  18497.  AFh set selected field marker character
  18498.     BYTE character to display at left edge of selected fields
  18499.  BCh set standard field processing mode
  18500.  BDh set alternate field processing mode (enables cursor pad for menus)
  18501.  BEh disables changing reverse logical attributes with ECh opcode
  18502.  BFh enables changing reverse logical attributes with ECh opcode
  18503.  C0h make current window topmost in system
  18504.  C1h force current process into foreground
  18505.  C2h make current window topmost in process
  18506.  C3h position mouse pointer relative to origin of current field
  18507.     BYTE rows below upper left corner of field
  18508.     BYTE columns to right of upper left corner of field
  18509.  C4h position mouse pointer relative to origin of given field
  18510.     BYTE field number
  18511.     BYTE rows below upper left corner of field
  18512.     BYTE columns to right of upper left corner of field
  18513.  C5h orphan current window (also hides it)
  18514.     Note: must be last in stream; all subsequent commands ignored
  18515.  C6h show all windows for this process
  18516.  C7h hide all windows for this process
  18517.  C8h suspend process and hide all its windows
  18518.  C9h force current process into background
  18519.  CAh make current window bottom-most in process
  18520.  CBh cancel current window manager operation, remove DV menu, give control
  18521.       to topmost application
  18522.  CCh orphan window and give it to the system for use as paste data
  18523.  CEh reorder windows
  18524.     DWORD pointer to null-terminated list of words; each word is segment
  18525.           of object handle for a window
  18526.  FFh no operation
  18527. SeeAlso: #0365,#0372,#0374
  18528.  
  18529. (Table 0374)
  18530. Values for MODES 14h to 1Fh "USER STREAMS":
  18531.     normally NOPs, but may be defined by SETESC message to invoke FAR
  18532.     routines, one for each mode number
  18533.       on entry to handler,
  18534.         DS:SI -> first byte of actual stream (not header)
  18535.         CX = number of bytes in stream
  18536.         ES:DI = window's handle
  18537. SeeAlso: #0372,#0373
  18538.  
  18539. (Table 0375)
  18540. Values asynchronous notification routine defined by man.stream 8Ah called with:
  18541.     ES:DI = handle of window
  18542.     DS:SI is 32-bit value set by 8Bh manager stream opcode
  18543.        mailbox contains message indicating event
  18544.           Opcode
  18545.            40h  horizontal movement
  18546.            DWORD object handle of window
  18547.            BYTE     new row
  18548.            BYTE     new col
  18549.            41h  vertical movement
  18550.            DWORD object handle of window
  18551.            BYTE     new row
  18552.            BYTE     new col
  18553.            42h  horizontal size change
  18554.            DWORD object handle of window
  18555.            BYTE     new rows
  18556.            BYTE     new cols
  18557.            43h  vertical size change
  18558.            DWORD object handle of window
  18559.            BYTE     new rows
  18560.            BYTE     new cols
  18561.            44h  scrolled horizontally
  18562.            DWORD object handle of window
  18563.            BYTE     mouse row within window
  18564.            BYTE     mouse column within window
  18565.            BYTE     field mouse is on, 0 if none
  18566.            BYTE     amount moved: >0 right, <0 left, 0 done
  18567.            45h  scrolled vertically
  18568.            DWORD object hande of window
  18569.            BYTE     mouse row within window
  18570.            BYTE     mouse column within window
  18571.            BYTE     field mouse is on, 0 if none
  18572.            BYTE     amount moved: >0 down, <0 up, 0 done
  18573.            46h  window close request
  18574.            DWORD object handle of window
  18575.            BYTE     mouse pointer row
  18576.            BYTE     mouse pointer column
  18577.            BYTE     field mouse is on, 0 if none
  18578.            47h  application's windows hidden
  18579.            48h  Help for Program selected
  18580.            DWORD object handle of window
  18581.            BYTE     mouse pointer row
  18582.            BYTE     mouse pointer column
  18583.            BYTE     field mouse is on, 0 if none
  18584.            49h  pointer message sent to window
  18585.            DWORD pointer handle which received message
  18586.            4Ah  switched to window from another ("raise")
  18587.            4Bh  switched away from the window ("lower")
  18588.            4Ch  video mode changed
  18589.            BYTE new BIOS video mode
  18590.            4Dh  Scissors/cUt selected
  18591.            DWORD object handle of window
  18592.            BYTE     row of upper left corner
  18593.            BYTE     column of upper left corner
  18594.            BYTE     field number ul corner is in, 0=none
  18595.            DWORD handle of orphaned window created with
  18596.              copy of data from specified region
  18597.            BYTE     height of region
  18598.            BYTE     width of region
  18599.            4Eh  Scissors/Copy selected
  18600.            DWORD object handle of window
  18601.            BYTE     row of upper left corner
  18602.            BYTE     column of upper left corner
  18603.            BYTE     field number ul corner is in, 0=none
  18604.            DWORD handle of orphaned window created with
  18605.              copy of data from specified region
  18606.            BYTE     height of region
  18607.            BYTE     width of region
  18608.            4Fh  Scissors/Paste selected
  18609.            DWORD object handle of window
  18610.            BYTE     row of upper left corner
  18611.            BYTE     column of upper left corner
  18612.            BYTE     field number ul corner is in, 0=none
  18613.            DWORD handle of orphaned window with data
  18614.            BYTE     height of region
  18615.            BYTE     width of region
  18616.             Note: orphaned data window should be adopted or freed
  18617.                 when done
  18618.            50h  main menu about to pop up
  18619.            51h  main menu popped down
  18620. Return: all registers unchanged
  18621. --------Q-1512--BH06-------------------------
  18622. INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
  18623.     AH = 12h
  18624.     BH = 06h
  18625.     BL = object
  18626.         00h object handle in DWORD on top of stack
  18627.         mailbox, keyboard, pointer, or timer
  18628.         (DV 2.50+) window
  18629.         01h (DV 2.50+) current task's window
  18630.         04h given task's keyboard (task's handle on top of stack)
  18631.         05h current task's default keyboard
  18632.     STACK: DWORD new priority of object in task's OBJECTQ
  18633.             (new priority of task if window handle)
  18634. Return: STACK popped
  18635. Notes:    initially all objects have the same default value.  Should only make
  18636.       relative adjustments to this default value.
  18637.     when changing priorities, all objects already on the objectq are
  18638.       reordered
  18639.     for window handles, only the non-blocked task(s) with the highest
  18640.       priority receive CPU time under DESQview 2.50-2.52; the default
  18641.       priority is 0Ah
  18642. SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h
  18643. --------Q-1512--BH07-------------------------
  18644. INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
  18645.     AH = 12h
  18646.     BH = 07h
  18647.     BL = object
  18648.         00h object handle in DWORD on top of stack
  18649.         mailbox, keyboard, pointer, or timer
  18650.         (DV 2.50+) window
  18651.         01h (DV 2.50+) current task's window
  18652.         04h given task's keyboard (task's handle on top of stack)
  18653.         05h current task's default keyboard
  18654. Return: STACK: DWORD object priority
  18655. Note:    initially all objects have the same default value.  Should only make
  18656.       relative adjustments to this default value.
  18657. SeeAlso: AH=12h/BH=06h
  18658. --------Q-1512--BH08-------------------------
  18659. INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
  18660.     AH = 12h
  18661.     BH = 08h
  18662.     BL = object
  18663.         00h handle in DWORD on top of stack
  18664.         window: total character positions in window
  18665.         timer: elapsed time since timer started
  18666.         pointer: number of messages queued to pointer object
  18667.         panel: number of panels in panel file
  18668.         keyboard: number of input buffers queued
  18669.         01h total chars in current task's default window
  18670.         02h number of messages in task's mailbox (task's handle on stack)
  18671.         03h number of messages in current task's mailbox
  18672.         04h number of input buffers queued in task's kbd (handle on stack)
  18673.         05h number of input buffers queued for current task's default kbd
  18674.         06h number of objects queued in OBJECTQ (task's handle on stack)
  18675.         07h number of objects queued in current task's OBJECTQ
  18676.         0Ch (DV 2.26+) total chars in window owning handle on top of stack
  18677.         0Dh (DV 2.26+) total chars in parent task's window
  18678. Return: DWORD on top of stack is result (any handle on stack has been popped)
  18679. Note:    for panel objects, a count of zero is returned if no panel file is open
  18680.       for the object
  18681. SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
  18682. --------Q-1512--BH09-------------------------
  18683. INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
  18684.     AH = 12h
  18685.     BH = 09h
  18686.     BL = object
  18687.         00h handle in DWORD on top of stack
  18688.         window: get chars/line
  18689.         timer: get 1/100 seconds remaining before timer expires
  18690.         mailbox: (DV/X) get number of bytes queued to mailbox
  18691.         01h get number of chars/line in current task's default window
  18692.         0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
  18693.         0Dh (DV 2.26+) get chars/line in parent task's window
  18694. Return: DWORD on top of stack is length (any handle on stack has been popped)
  18695. SeeAlso: AH=12h/BH=08h
  18696. --------Q-1512--BH0A-------------------------
  18697. INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
  18698.     AH = 12h
  18699.     BH = 0Ah
  18700.     BL = window to write to
  18701.         00h window handle is DWORD on top of stack
  18702.         01h current task's default window
  18703.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  18704.         0Dh (DV 2.26+) default window of parent of current task
  18705.     STACK:    DWORD count of attributes
  18706.         DWORD address of attribute string
  18707.         DWORD count of characters
  18708.         DWORD address of character string
  18709. Return: STACK popped
  18710. Notes:    if one string is longer than the other, the shorter one will be reused
  18711.       until the longer one is exhausted
  18712.     the cursor is left just after the last character written
  18713. SeeAlso: AH=12h/BH=0Bh"WINDOW"
  18714. --------Q-1512--BH0A-------------------------
  18715. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
  18716.     AH = 12h
  18717.     BH = 0Ah
  18718.     BL = mailbox to write to
  18719.         00h handle is DWORD on top of stack
  18720.         02h default mailbox of task whose handle is on top of stack
  18721.         03h current task's default mailbox
  18722.     STACK:    DWORD    status (low byte)
  18723.         DWORD    length of message
  18724.         DWORD    address of message
  18725. Return: STACK popped
  18726. Notes:    the message is copied into either system or common memory
  18727.     insufficient memory normally causes the process to be aborted; under
  18728.       DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
  18729. SeeAlso: AH=12h/BH=0Bh"MAILBOX"
  18730. --------Q-1512--BH0A-------------------------
  18731. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
  18732.     AH = 12h
  18733.     BH = 0Ah
  18734.     BL = object
  18735.         00h handle is DWORD on top of stack
  18736.         timer: start timer for specified interval
  18737.         pointer: set control flags (see #0377)
  18738.         keyboard: set control flags (see #0376)
  18739.         04h set control flags on KEYBOARD object (handle on top of stack)
  18740.         05h set control flags on task's default KEYBOARD object
  18741.     STACK: (if timer)   DWORD duration in 1/100 seconds
  18742.            (otherwise)  DWORD bits to set
  18743. Return: STACK popped
  18744. SeeAlso: AH=12h/BH=0Bh"OBJECT"
  18745.  
  18746. Bitfields for DESQview keyboard object bits:
  18747. Bit(s)    Description    (Table 0376)
  18748.  15    reserved, can't be set
  18749.  14    unused
  18750.  13    reserved, can't be set
  18751.  12-6    unused
  18752.  5    (DV 2.2+) exclusive input
  18753.  4    filter all keys (used with handler established by SETESC)
  18754.     if 0, only keys that would normally be displayed are filtered
  18755.  3    program continues executing while input in progress
  18756.  2    insert mode active for field mode
  18757.  1    hardware cursor displayed when task is hardware cursor owner
  18758.     must be set if keyboard in field mode and field table includes input
  18759.       fields
  18760.  0    keyboard is in field mode rather than keystroke mode
  18761.  
  18762. Bitfields for DESQview pointer object bits:
  18763. Bit(s)    Description    (Table 0377)
  18764.  15    reserved, can't be set
  18765.  14-8    unused
  18766.  7    mouse pointer is hidden while in window
  18767.  6    get messages even if window not topmost
  18768.  5    get messages even if window not foreground
  18769.  4    multiple clicks separated by less than 1/3 second are counted and
  18770.       returned in a single message
  18771.  3    pointer position is relative to screen origin, not window origin
  18772.  2    send message on button release as well as button press
  18773.  1    (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever the
  18774.       pointer leaves the window
  18775.  0    send message only on button activity, not movement
  18776.     DV-specific, and INT 15/AX=DE0Fh must have been called first
  18777. --------Q-1512--BH0B-------------------------
  18778. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
  18779.     AH = 12h
  18780.     BH = 0Bh
  18781.     BL = window to write attributes to
  18782.         00h handle is DWORD on top of stack
  18783.         01h current task's default window
  18784.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  18785.         0Dh (DV 2.26+) default window of parent of current task
  18786.     STACK:    DWORD number of attributes to write
  18787.         DWORD address of attributes
  18788. Return: STACK popped
  18789. Note:    the attributes are written starting at the current cursor position; the
  18790.       cursor is left just after the last position written
  18791. SeeAlso: AH=12h/BH=0Ah"WINDOW"
  18792. --------Q-1512--BH0B-------------------------
  18793. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
  18794.     AH = 12h
  18795.     BH = 0Bh
  18796.     BL = mailbox to write to
  18797.         00h handle is DWORD on top of stack
  18798.         02h default mailbox of task whose handle is on top of stack
  18799.         03h current task's default mailbox
  18800.     STACK:    DWORD    status (low byte)
  18801.         DWORD    length of message
  18802.         DWORD    address of message
  18803. Return: STACK popped
  18804. Notes:    only a pointer to the message is stored, but the write may still fail
  18805.       due to insufficient memory
  18806.     under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  18807. SeeAlso: AH=12h/BH=0Ah"MAILBOX"
  18808. --------Q-1512--BH0B-------------------------
  18809. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
  18810.     AH = 12h
  18811.     BH = 0Bh
  18812.     BL = OBJECTQ from which to remove all copies of a particular object
  18813.         06h OBJECTQ of task whose handle is on top of stack
  18814.         07h task's default OBJECTQ
  18815.     STACK:    DWORD    handle of object to remove
  18816. Return: STACK popped
  18817. Note:    should be sent whenever an object is erased or closed
  18818. --------Q-1512--BH0B-------------------------
  18819. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
  18820.     AH = 12h
  18821.     BH = 0Bh
  18822.     BL = object
  18823.         00h handle is DWORD on top of stack
  18824.         pointer: reset control flags
  18825.         keyboard: reset control flags
  18826.         04h clear control flags on KEYBOARD object (handle on top of stack)
  18827.         05h clear control flags on task's default KEYBOARD object
  18828.     STACK:    DWORD    which bits to clear (see #0376,#0377)
  18829. Return: STACK popped
  18830. SeeAlso: AH=12h/BH=0Ah"OBJECT"
  18831. --------Q-1512--BH0C-------------------------
  18832. INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
  18833.     AH = 12h
  18834.     BH = 0Ch
  18835.     BL = object
  18836.         00h handle is DWORD on top of stack
  18837.         window:      fill with given character from scroll origin to end
  18838.         keyboard: attach to a window
  18839.         timer:      open
  18840.         pointer:  start taking input for window
  18841.         panel:      associate with a panel file
  18842.         01h fill task's default window with given char from scrl org to end
  18843.         02h open given task's mailbox for input (task's handle on stack)
  18844.         03h open current task's mailbox
  18845.         04h attach a KEYBOARD to a window (handle on top of stack)
  18846.         05h attach task's default KEYBOARD to a window
  18847.         06h open a task's OBJECTQ (task's handle on top of stack)
  18848.         07h open current task's OBJECTQ
  18849.         0Ch (DV 2.26+) fill def window of task owning handle on top of stck
  18850.         0Dh (DV 2.26+) fill default window of parent of current task
  18851.      STACK: (if window)   DWORD character to fill with
  18852.         (if keyboard) DWORD handle of window to attach to
  18853.         (if pointer)  DWORD handle of window to attach to
  18854.         (if panel)    DWORD length of filename or resident panel
  18855.                   DWORD address of filename or resident panel
  18856.         (otherwise)   nothing
  18857. Return: STACK popped
  18858. Notes:    if first byte of panel file name is 1Bh, then the "name" IS a panel
  18859.     if first two bytes of panel file "name" are C0hC3h, then the "name" IS
  18860.       the panel file
  18861.     result code of open may be retrieved with STATUS message
  18862.     logical cursor is left at scroll origin after filling window
  18863.     the task opening a mailbox becomes its owner, and the only task allowed
  18864.       to read the mailbox
  18865.     messages are only sent to a pointer object when the mouse is positioned
  18866.       in the window to which the pointer has been attached
  18867.     there is no need to explicitly open a timer object, as ADDTO and WRITE
  18868.       messages automatically open the timer
  18869. SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
  18870. --------Q-1512--BH0D-------------------------
  18871. INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
  18872.     AH = 12h
  18873.     BH = 0Dh
  18874.     BL = object
  18875.         00h handle is DWORD on top of stack
  18876.         timer:      close
  18877.         keyboard: detach from window and discard queued input
  18878.         pointer:  stop taking input
  18879.         panel:      close
  18880.         mailbox:  close, unlock, and discard any pending messages
  18881.         02h close given task's mailbox (task's handle on top of stack)
  18882.         03h close task's default mailbox
  18883.         04h close KEYBOARD object (handle on top of stack)
  18884.         05h close task's default KEYBOARD
  18885.         06h close given task's OBJECTQ (task's handle on top of stack)
  18886.         07h close current task's OBJECTQ
  18887. Return: STACK popped if handle passed on stack
  18888. Notes:    when an OBJECTQ is closed, each object in the OBJECTQ is sent an
  18889.       ERASE message (AH=12h/BH=0Eh)
  18890.     when a panel object is closed, the panel file and any panels currently
  18891.       in use are freed; window and keyboard objects created by APPLY are
  18892.       not affected, but field mode input ceases
  18893.     open but idle timer objects consume a small amount of CPU time
  18894. SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
  18895. --------Q-1512--BH0E-------------------------
  18896. INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
  18897.     AH = 12h
  18898.     BH = 0Eh
  18899.     BL = object
  18900.         00h handle is DWORD on top of stack
  18901.         window:      clear from scroll origin to end of window
  18902.         keyboard: discard input
  18903.         timer:      cancel current interval
  18904.         pointer:  discard all pending messages
  18905.         mailbox:  discard all pending messages
  18906.         01h clear task's default window from scroll origin to end
  18907.         02h discard all queued messages in mailbox (handle on top of stack)
  18908.         03h discard all queued messages in current task's default mailbox
  18909.         04h discard all input queued to KEYBOARD (handle on top of stack)
  18910.         05h discard all input queued to task's default KEYBOARD
  18911.         06h remove all objects from OBJECTQ (task's handle on top of stack)
  18912.         07h remove all objects from current task's OBJECTQ
  18913.         0Ch (DV 2.26+) clear window of task owning handle on top of stack
  18914.         0Dh (DV 2.26+) clear default window of parent of current task
  18915. Return: STACK popped if handle passed on stack
  18916. Note:    when an OBJECTQ is erased, each object in the OBJECTQ is also erased
  18917. SeeAlso: AH=12h/BH=02h
  18918. --------Q-1512--BH0F-------------------------
  18919. INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
  18920.     AH = 12h
  18921.     BH = 0Fh
  18922.     BL = object
  18923.         00h handle is DWORD on top of stack
  18924.         timer:     is it running?
  18925.         pointer: return status of last message
  18926.         panel:     verify success of last OPEN or APPLY
  18927.         02h return status of last msg READ from mailbox (handle on stack)
  18928.         03h return status of last msg READ from task's default mailbox
  18929.         04h get stat of last msg from task's KEYBOARD (task handle on stk)
  18930.         05h get status of last msg from task's default KEYBOARD
  18931.         06h return whether OBJECTQ is open or not (handle on top of stack)
  18932.         07h return whether task's default OBJECTQ is open or not
  18933. Return: DWORD on top of stack is status (any handle passed on stack popped)
  18934. Notes:    if object is a panel object, the status indicates the error code:
  18935.       00h successful
  18936.       14h panel name not in panel directory
  18937.       15h not enough memory to apply panel
  18938.       16h invalid panel format
  18939.       17h panel file already open
  18940.       81h-92h  DOS error codes+80h            \  codes > 80h indicate
  18941.       95h not enough memory to open panel file     > that the panel was
  18942.       98h null panel file name            /  not opened
  18943.     if object is a timer, the status is:
  18944.       00000000h open but not running
  18945.       40000000h open and running
  18946.       80000000h closed
  18947.     if object is an OBJECTQ, the status is:
  18948.       00000000h open
  18949.       80000000h closed
  18950.     if object is a keyboard in keystroke mode, the status is the extended
  18951.       character code (scan code) of the last keystroke
  18952.     if object is a keyboard in field mode, the status indicates the reason
  18953.       for the last return from the field manager
  18954.       00h Enter key pressed
  18955.       01h Button 1 or keystroke selection
  18956.       02h Button 2
  18957.       03h validation
  18958.       04h auto Enter on field
  18959.       1Bh Escape pressed
  18960.       46h ^Break pressed
  18961.       other: extended code for key terminating input
  18962.     the status of mailbox messages sent by the window manager is always 80h
  18963.     the status of a pointer message is the same as the status field in the
  18964.       message
  18965. SeeAlso: AH=12h/BH=04h"READ"
  18966. --------Q-1512--BH10-------------------------
  18967. INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
  18968.     AH = 12h
  18969.     BH = 10h
  18970.     BL = object
  18971.         00h handle is DWORD on top of stack
  18972.         window: return TRUE if logical cursor past end of window
  18973.         mailbox: ???
  18974.         01h returns TRUE if logical cursor past end of task's def window
  18975.         02h return ??? for task's mailbox (task's handle on top of stack)
  18976.         03h return ??? for current task's mailbox
  18977.         0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
  18978.         0Dh (DV 2.26+) check log cursor of window of parent task
  18979. Return: DWORD on top of stack is status (any handle on stack has been popped)
  18980. --------Q-1512--BH11-------------------------
  18981. INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
  18982.     AH = 12h
  18983.     BH = 11h
  18984.     BL = window for which to move cursor
  18985.         00h window's handle is DWORD on top of stack
  18986.         01h task's default window
  18987.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  18988.         0Dh (DV 2.26+) default window of parent of current task
  18989.     STACK: DWORD column
  18990.            DWORD row
  18991. Return: STACK popped
  18992. --------Q-1512--BH11-------------------------
  18993. INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
  18994.     AH = 12h
  18995.     BH = 11h
  18996.     BL = mailbox to name
  18997.         00h DWORD on top of stack is mailbox handle
  18998.         02h use given task's mailbox (task's handle on top of stack)
  18999.         03h use current task's default mailbox
  19000.     STACK: DWORD length of name
  19001.            DWORD address of name
  19002. Return: STACK popped
  19003. SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh
  19004. --------Q-1512--BX1100-----------------------
  19005. INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
  19006.     AH = 12h
  19007.     BX = 1100h
  19008.     STACK: DWORD object handle for pointer object
  19009.            DWORD number of colums to scale pointer position to
  19010.            DWORD number of rows to scale pointer position to
  19011. Return: STACK popped
  19012. SeeAlso: AH=12h/BX=1200h
  19013. --------Q-1512--BH12-------------------------
  19014. INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
  19015.     AH = 12h
  19016.     BH = 12h
  19017.     BL = window to read from
  19018.         00h handle is DWORD on top of stack
  19019.         01h read next N chars or attributes on task's default window
  19020.         0Ch (DV 2.26+) read window of task owning handle on top of stack
  19021.         0Dh (DV 2.26+) read default window of parent of current task
  19022.     STACK: DWORD count
  19023. Return: STACK: DWORD number of bytes actually read
  19024.            DWORD address of buffer containing data
  19025. Notes:    reading starts at the current logical cursor position; the cursor is
  19026.       updated to point at the character following the last one read
  19027.     any translucent blanks (FFh) which are visible on screen are changed
  19028.       to the character which is seen through them
  19029.     the string produced by the read is placed in an input buffer which may
  19030.       be reused by the next READ or READN of a window
  19031.     window stream opcodes D8h and D9h determine whether the read returns
  19032.       characters or attributes
  19033. SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
  19034. --------Q-1512--BH12-------------------------
  19035. INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX
  19036.     AH = 12h
  19037.     BH = 12h
  19038.     BL = mailbox for which to retrieve name
  19039.         00h DWORD on top of stack is mailbox handle
  19040.         02h use given task's mailbox (task's handle on top of stack)
  19041.         03h use current task's default mailbox
  19042.     STACK: DWORD length of buffer for name
  19043.            DWORD pointer to buffer
  19044. Return: STACK: DWORD length of returned name (or size of buffer, if less)
  19045. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  19046. Note:    the returned name is not NUL-terminated
  19047. SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh
  19048. --------Q-1512--BX1200-----------------------
  19049. INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
  19050.     AH = 12h
  19051.     BX = 1200h
  19052.     STACK: DWORD object handle for pointer
  19053. Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
  19054.            DWORD pointer pos scaled as if window were this many rows high
  19055. SeeAlso: AH=12h/BX=1100h
  19056. --------Q-1512--BH13-------------------------
  19057. INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
  19058.     AH = 12h
  19059.     BH = 13h
  19060.     BL = window object
  19061.         00h DWORD on top of stack is handle for window to redraw
  19062.         01h redraw task's default window
  19063.         0Ch (DV 2.26+) redraw window of task owning handle on top of stack
  19064.         0Dh (DV 2.26+) redraw default window of parent of current task
  19065. Return: STACK popped if handle was passed on stack
  19066. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh
  19067. --------Q-1512--BH13-------------------------
  19068. INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE
  19069.     AH = 12h
  19070.     BH = 13h
  19071.     BL = mailbox from which to read
  19072.         00h DWORD on top of stack is mailbox handle
  19073.         02h use given task's mailbox (task's handle on top of stack)
  19074.         03h use current task's default mailbox
  19075.     STACK: DWORD size of buffer in bytes
  19076.            DWORD pointer to buffer
  19077. Return: STACK: DWORD number of bytes read
  19078. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  19079. Notes:    this call blocks if no input is available, but will return less than
  19080.       the requested number of bytes if some (but insufficient) data is
  19081.       available
  19082.     use this call instead of AH=12h/BH=04h if the mailbox has flag bits
  19083.       4 or 5 set, as common memory may be exhausted by that call when
  19084.       attempting to read the next message
  19085. SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h
  19086. --------Q-1512--BX1300-----------------------
  19087. INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
  19088.     AH = 12h
  19089.     BX = 1300h
  19090.     STACK: DWORD object handle for pointer
  19091.            DWORD character to use for pointer
  19092. Return: STACK popped
  19093. --------Q-1512--BH14-------------------------
  19094. INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
  19095.     AH = 12h
  19096.     BH = 14h
  19097.     BL = message modifier
  19098.         00h handle is DWORD on top of stack
  19099.         01h define user stream
  19100.         04h intercept keystrokes from KEYBOARD to window (handle on stack)
  19101.         05h intercept keystrokes from task's default KEYBOARD to a window
  19102.     STACK: (if window)   DWORD user stream number (14h-1Fh)
  19103.                  DWORD address of FAR user stream handler
  19104.            (if keyboard) DWORD address of FAR filter function (see #0378)
  19105. Return: STACK popped
  19106.  
  19107. (Table 0378)
  19108. Values keyboard filter function is called with when keyboard is in field mode:
  19109.     AL = character
  19110.     AH = 00h or extended ASCII code if AL = 00h
  19111.     BL = field number
  19112.     CH = cursor column
  19113.     CL = cursor row
  19114.     DL = field type modifier (sixth item in field table entry)
  19115.     DH = seventh item in field table entry
  19116.     ES:SI = window's handle
  19117.     DS:DI -> field table entry for field containing the cursor
  19118. Return: AH = action to take
  19119.         00h use keystroke
  19120.         01h ignore keystroke
  19121.         FFh beep and ignore keystroke
  19122. Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
  19123. --------Q-1512--BH14-------------------------
  19124. INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
  19125.     AH = 12h
  19126.     BH = 14h
  19127.     BL = object
  19128.         00h mailbox handle is DWORD on top of stack
  19129.         02h use given task's mailbox (task's handle on top of stack)
  19130.         03h use current task's default mailbox
  19131. Return: STACK popped if BL=00h
  19132. Note:    release exclusive access by sending CLOSE message to mailbox
  19133.     access may be requested multiple times, and requires multiple CLOSEs
  19134. SeeAlso: AH=12h/BH=0Dh
  19135. --------Q-1512--BH15-------------------------
  19136. INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
  19137.     AH = 12h
  19138.     BH = 15h
  19139.     BL = object
  19140.         00h DWORD on top of stack
  19141.         mailbox, keyboard, or pointer only
  19142.         02h mailbox for task whose handle is on top of stack
  19143.         03h mailbox for current task
  19144.         04h keyboard for task whose handle is on top of stack
  19145.         05h keyboard for current task
  19146.     STACK: DWORD flags (see #0379,#0380)
  19147. Return: STACK popped
  19148. Notes:    only available if the API level has been set to at least 2.20
  19149.     equivalent to performing SUBFROM and ADDTO calls on the object
  19150.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  19151.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  19152. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
  19153.  
  19154. Bitfields for DESQview mailbox object flags:
  19155. Bit(s)    Description    (Table 0379)
  19156.  0    all mail messages in common memory
  19157.  1    allow write even if closed
  19158.  2    don't erase messages when mailbox closed
  19159.  4    (DV/X) append messages with like status and sender (stream-oriented
  19160.       mail)
  19161.  5    (DV/X) store mail in expanded memory (pool grows as needed)
  19162.  6    (DV/X) make mailbox into non-owned mailbox
  19163.  
  19164. Bitfields for DESQview keyboard object flags:
  19165. Bit(s)    Description    (Table 0380)
  19166.  5    exclusive input when keyboard in use for input
  19167. --------Q-1512--BH16-------------------------
  19168. INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
  19169.     AH = 12h
  19170.     BH = 16h
  19171.     BL = object
  19172.         00h DWORD on top of stack
  19173.         mailbox, keyboard, or pointer only
  19174.         02h mailbox for task whose handle is on top of stack
  19175.         03h mailbox for current task
  19176.         04h keyboard for task whose handle is on top of stack
  19177.         05h keyboard for current task
  19178. Return: STACK: DWORD current control flags (see #0379,#0380)
  19179. Notes:    only available if the API level has been set to at least 2.20
  19180.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  19181.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  19182. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h
  19183. --------Q-1512--BH17-------------------------
  19184. INT 15 - DESQview v2.42-2.52 - BUG
  19185.     AH = 12h
  19186.     BH = 17h
  19187.     BL = object
  19188.         00h DWORD on top of stack
  19189.         mailbox, keyboard, or pointer only
  19190.         02h mailbox for task whose handle is on top of stack
  19191.         03h mailbox for current task
  19192.         04h keyboard for task whose handle is on top of stack
  19193.         05h keyboard for current task
  19194. Return: STACK popped if handle passed on stack
  19195. Notes:    due to a fencepost error, message 17h is accepted for mailboxes,
  19196.       keyboards, and pointers, but causes a random branch
  19197.     DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
  19198. --------Q-1512--BH80-------------------------
  19199. INT 15 - DESQview v2.50+ - SEND MESSAGE 00h WITH ERROR RECOVERY
  19200.     AH = 12h
  19201.     BH = 80h
  19202. Note:    this function is identical to AH=12h/BH=00h, except that DESQview will
  19203.       not pop up a "Programming Error" window, instead returning an error
  19204.       code in AL (see #0381)
  19205. SeeAlso: AH=12h/BH=00h
  19206.  
  19207. (Table 0381)
  19208. Values for DESQview error code:
  19209.  00h    no error
  19210.  01h    invalid values
  19211.  02h    alias invalid
  19212.  03h    handle valid but wrong type
  19213.  04h    invalid handle
  19214. --------Q-1512--BH81-------------------------
  19215. INT 15 - DESQview v2.50+ - SEND MESSAGE 01h WITH ERROR RECOVERY
  19216.     AH = 12h
  19217.     BH = 81h
  19218. Note:    this function is identical to AH=12h/BH=01h, except that DESQview will
  19219.       not pop up a "Programming Error" window, instead returning an error
  19220.       code in AL (see #0381)
  19221. SeeAlso: AH=12h/BH=01h
  19222. --------Q-1512--BH82-------------------------
  19223. INT 15 - DESQview v2.50+ - SEND MESSAGE 02h WITH ERROR RECOVERY
  19224.     AH = 12h
  19225.     BH = 82h
  19226. Note:    this function is identical to AH=12h/BH=02h, except that DESQview will
  19227.       not pop up a "Programming Error" window, instead returning an error
  19228.       code in AL (see #0381)
  19229. SeeAlso: AH=12h/BH=02h
  19230. --------Q-1512--BH83-------------------------
  19231. INT 15 - DESQview v2.50+ - SEND MESSAGE 03h WITH ERROR RECOVERY
  19232.     AH = 12h
  19233.     BH = 83h
  19234. Note:    this function is identical to AH=12h/BH=03h, except that DESQview will
  19235.       not pop up a "Programming Error" window, instead returning an error
  19236.       code in AL (see #0381)
  19237. SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h
  19238. --------Q-1512--BH84-------------------------
  19239. INT 15 - DESQview v2.50+ - SEND MESSAGE 04h WITH ERROR RECOVERY
  19240.     AH = 12h
  19241.     BH = 84h
  19242. Note:    this function is identical to AH=12h/BH=04h, except that DESQview will
  19243.       not pop up a "Programming Error" window, instead returning an error
  19244.       code in AL (see #0381)
  19245. SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h
  19246. --------Q-1512--BH85-------------------------
  19247. INT 15 - DESQview v2.50+ - SEND MESSAGE 05h WITH ERROR RECOVERY
  19248.     AH = 12h
  19249.     BH = 85h
  19250. Note:    this function is identical to AH=12h/BH=05h, except that DESQview will
  19251.       not pop up a "Programming Error" window, instead returning an error
  19252.       code in AL (see #0381)
  19253. SeeAlso: AH=12h/BH=05h
  19254. --------Q-1512--BH86-------------------------
  19255. INT 15 - DESQview v2.50+ - SEND MESSAGE 06h WITH ERROR RECOVERY
  19256.     AH = 12h
  19257.     BH = 86h
  19258. Note:    this function is identical to AH=12h/BH=06h, except that DESQview will
  19259.       not pop up a "Programming Error" window, instead returning an error
  19260.       code in AL (see #0381)
  19261. SeeAlso: AH=12h/BH=06h
  19262. --------Q-1512--BH87-------------------------
  19263. INT 15 - DESQview v2.50+ - SEND MESSAGE 07h WITH ERROR RECOVERY
  19264.     AH = 12h
  19265.     BH = 87h
  19266. Note:    this function is identical to AH=12h/BH=07h, except that DESQview will
  19267.       not pop up a "Programming Error" window, instead returning an error
  19268.       code in AL (see #0381)
  19269. SeeAlso: AH=12h/BH=07h
  19270. --------Q-1512--BH88-------------------------
  19271. INT 15 - DESQview v2.50+ - SEND MESSAGE 08h WITH ERROR RECOVERY
  19272.     AH = 12h
  19273.     BH = 88h
  19274. Note:    this function is identical to AH=12h/BH=08h, except that DESQview will
  19275.       not pop up a "Programming Error" window, instead returning an error
  19276.       code in AL (see #0381)
  19277. SeeAlso: AH=12h/BH=08h
  19278. --------Q-1512--BH89-------------------------
  19279. INT 15 - DESQview v2.50+ - SEND MESSAGE 09h WITH ERROR RECOVERY
  19280.     AH = 12h
  19281.     BH = 89h
  19282. Note:    this function is identical to AH=12h/BH=09h, except that DESQview will
  19283.       not pop up a "Programming Error" window, instead returning an error
  19284.       code in AL (see #0381)
  19285. SeeAlso: AH=12h/BH=09h
  19286. --------Q-1512--BH8A-------------------------
  19287. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ah WITH ERROR RECOVERY
  19288.     AH = 12h
  19289.     BH = 8Ah
  19290. Note:    this function is identical to AH=12h/BH=0Ah, except that DESQview will
  19291.       not pop up a "Programming Error" window, instead returning an error
  19292.       code in AL (see #0381)
  19293. SeeAlso: AH=12h/BH=0Ah
  19294. --------Q-1512--BH8B-------------------------
  19295. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Bh WITH ERROR RECOVERY
  19296.     AH = 12h
  19297.     BH = 8Bh
  19298. Note:    this function is identical to AH=12h/BH=0Bh, except that DESQview will
  19299.       not pop up a "Programming Error" window, instead returning an error
  19300.       code in AL (see #0381)
  19301. SeeAlso: AH=12h/BH=0Bh
  19302. --------Q-1512--BH8C-------------------------
  19303. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ch WITH ERROR RECOVERY
  19304.     AH = 12h
  19305.     BH = 8Ch
  19306. Note:    this function is identical to AH=12h/BH=0Ch, except that DESQview will
  19307.       not pop up a "Programming Error" window, instead returning an error
  19308.       code in AL (see #0381)
  19309. SeeAlso: AH=12h/BH=0Ch
  19310. --------Q-1512--BH8D-------------------------
  19311. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Dh WITH ERROR RECOVERY
  19312.     AH = 12h
  19313.     BH = 8Dh
  19314. Note:    this function is identical to AH=12h/BH=0Dh, except that DESQview will
  19315.       not pop up a "Programming Error" window, instead returning an error
  19316.       code in AL (see #0381)
  19317. SeeAlso: AH=12h/BH=0Dh
  19318. --------Q-1512--BH8E-------------------------
  19319. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Eh WITH ERROR RECOVERY
  19320.     AH = 12h
  19321.     BH = 8Eh
  19322. Note:    this function is identical to AH=12h/BH=0Eh, except that DESQview will
  19323.       not pop up a "Programming Error" window, instead returning an error
  19324.       code in AL (see #0381)
  19325. SeeAlso: AH=12h/BH=0Eh
  19326. --------Q-1512--BH8F-------------------------
  19327. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Fh WITH ERROR RECOVERY
  19328.     AH = 12h
  19329.     BH = 8Fh
  19330. Note:    this function is identical to AH=12h/BH=0Fh, except that DESQview will
  19331.       not pop up a "Programming Error" window, instead returning an error
  19332.       code in AL (see #0381)
  19333. SeeAlso: AH=12h/BH=0Fh
  19334. --------Q-1512--BH90-------------------------
  19335. INT 15 - DESQview v2.50+ - SEND MESSAGE 10h WITH ERROR RECOVERY
  19336.     AH = 12h
  19337.     BH = 90h
  19338. Note:    this function is identical to AH=12h/BH=10h, except that DESQview will
  19339.       not pop up a "Programming Error" window, instead returning an error
  19340.       code in AL (see #0381)
  19341. SeeAlso: AH=12h/BH=10h
  19342. --------Q-1512--BH91-------------------------
  19343. INT 15 - DESQview v2.50+ - SEND MESSAGE 11h WITH ERROR RECOVERY
  19344.     AH = 12h
  19345.     BH = 91h
  19346. Note:    this function is identical to AH=12h/BH=11h, except that DESQview will
  19347.       not pop up a "Programming Error" window, instead returning an error
  19348.       code in AL (see #0381)
  19349. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h
  19350. --------Q-1512--BH92-------------------------
  19351. INT 15 - DESQview v2.50+ - SEND MESSAGE 12h WITH ERROR RECOVERY
  19352.     AH = 12h
  19353.     BH = 92h
  19354. Note:    this function is identical to AH=12h/BH=12h, except that DESQview will
  19355.       not pop up a "Programming Error" window, instead returning an error
  19356.       code in AL (see #0381)
  19357. SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h
  19358. --------Q-1512--BH93-------------------------
  19359. INT 15 - DESQview v2.50+ - SEND MESSAGE 13h WITH ERROR RECOVERY
  19360.     AH = 12h
  19361.     BH = 93h
  19362. Note:    this function is identical to AH=12h/BH=13h, except that DESQview will
  19363.       not pop up a "Programming Error" window, instead returning an error
  19364.       code in AL (see #0381)
  19365. SeeAlso: AH=12h/BH=13h
  19366. --------Q-1512--BH94-------------------------
  19367. INT 15 - DESQview v2.50+ - SEND MESSAGE 14h WITH ERROR RECOVERY
  19368.     AH = 12h
  19369.     BH = 94h
  19370. Note:    this function is identical to AH=12h/BH=14h, except that DESQview will
  19371.       not pop up a "Programming Error" window, instead returning an error
  19372.       code in AL (see #0381)
  19373. SeeAlso: AH=12h/BH=14h
  19374. --------Q-1512--BH95-------------------------
  19375. INT 15 - DESQview v2.50+ - SEND MESSAGE 15h WITH ERROR RECOVERY
  19376.     AH = 12h
  19377.     BH = 95h
  19378. Note:    this function is identical to AH=12h/BH=15h, except that DESQview will
  19379.       not pop up a "Programming Error" window, instead returning an error
  19380.       code in AL (see #0381)
  19381. SeeAlso: AH=12h/BH=15h
  19382. --------Q-1512--BH96-------------------------
  19383. INT 15 - DESQview v2.50+ - SEND MESSAGE 16h WITH ERROR RECOVERY
  19384.     AH = 12h
  19385.     BH = 96h
  19386. Note:    this function is identical to AH=12h/BH=16h, except that DESQview will
  19387.       not pop up a "Programming Error" window, instead returning an error
  19388.       code in AL (see #0381)
  19389. SeeAlso: AH=12h/BH=16h
  19390. --------T-1513-------------------------------
  19391. INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
  19392.     AH = 13h
  19393.     STACK:    WORD    process ID
  19394. Return: AX = status (SYS_OK or SYS_ERROR)
  19395. SeeAlso: AH=12h"VMiX"
  19396. --------T-1513-------------------------------
  19397. INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
  19398.     AH = 13h
  19399. Return: BX:AX -> task control block (see #0382)
  19400. SeeAlso: AH=15h"MultiDOS"
  19401.  
  19402. Format of MultiDOS Plus v4.0 task control block:
  19403. Offset    Size    Description    (Table 0382)
  19404.  00h    DWORD    pointer to next TCB
  19405.  04h  8 BYTEs    ASCIZ task name
  19406.  0Ch  2 BYTEs    ???
  19407.  0Eh    WORD    task PSP segment
  19408.  10h    WORD    abort/suspend flags
  19409.  12h    WORD    current screen segment (see AH=0Bh,AH=0Ch)
  19410.  14h    WORD    priority level (0000h-FFFEh)
  19411.  16h    WORD    time slice counter
  19412.  18h  2 BYTEs    ???
  19413.  1Ah    WORD    suspend timer value
  19414.  1Ch    WORD    stack segment
  19415.  1Eh    WORD    stack pointer
  19416.  20h    WORD    display type
  19417.  22h    WORD    display memory
  19418.  24h  2 BYTEs    ???
  19419.  26h    WORD    termination count
  19420.  28h    WORD    equipment flag for BIO10 driver
  19421.  2Ah    BYTE    background CRT mode
  19422.  2Bh    WORD    screen width in columns
  19423.  2Dh    WORD    screen size in bytes
  19424.  2Fh    WORD    segment of physical screen memory
  19425.  31h 16 BYTEs    eight cursor positions
  19426.  41h    WORD    current cursor shape
  19427.  43h    BYTE    active display page
  19428.  44h    WORD    CRT controller I/O port base
  19429.  46h  2 BYTEs    ???
  19430.  48h    WORD    foreground task flag
  19431.  4Ah  6 BYTEs    ???
  19432.  50h    WORD    saved video segment (see AH=0Bh,AH=0Ch)
  19433.  52h    DWORD    old INT 22
  19434.  56h    DWORD    old INT 23
  19435.  5Ah    DWORD    old INT 24
  19436.  5Eh    WORD    top of memory for task
  19437.  60h  4 BYTEs    ???
  19438.  64h    WORD    DTA segment (see INT 21/AH=1Ah)
  19439.  66h    WORD    DTA offset
  19440.  68h  4 BYTEs    ???
  19441.  6Ch    BYTE    current ANSI.SYS attribute
  19442.  6Dh    BYTE    current ANSI.SYS column
  19443.  6Eh    BYTE    current ANSI.SYS row
  19444.  6Fh    BYTE    current ANSI.SYS display state
  19445.  70h    BYTE    maximum ANSI.SYS columns
  19446.  71h    BYTE    current ANSI.SYS page
  19447.  72h    WORD    saved ANSI.SYS cursor position
  19448.  74h    BYTE    ANSI.SYS parameter buffer index
  19449.  75h    BYTE    current ANSI.SYS screen mode
  19450.  76h    BYTE    ANSI.SYS wrap flag
  19451.  77h  6 BYTEs    ANSI.SYS parameter buffer
  19452.  7Dh    BYTE    ANSI.SYS keyboard DSR state
  19453.  7Eh  7 BYTEs    ANSI.SYS keyboard DSR buffer
  19454.  85h  3 BYTEs    ???
  19455.  88h 16 BYTEs    request header for DOS driver calls
  19456.  98h 14 BYTEs    ???
  19457.  A6h    WORD    segment of EMS map if EMS task
  19458.  A8h    WORD    flag: task makes EMS calls
  19459.  AAh    WORD    EMS handle for task
  19460.  ACh    WORD    keyboard shift state
  19461.  AEh 12 BYTEs    ???
  19462.  BAh    WORD    TCB of parent if child task
  19463.  BCh    WORD    termination code
  19464.  BEh    WORD    COM port number
  19465.  C0h  4 BYTEs    ???
  19466.  C4h    WORD    current IRQ number
  19467.  C6h  2 BYTEs    ???
  19468.  C8h    WORD    miscellaneous flag word
  19469.  CAh  2 BYTEs    ???
  19470.  CCh    DWORD    old INT 10
  19471.  D0h    WORD    EMS alternate map set number
  19472.  D2h 414 BYTEs    DOS current disk and directory context (optional)
  19473. --------T-1514-------------------------------
  19474. INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
  19475.     AH = 14h
  19476.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  19477.         WORD    bottom right corner of window (high = row, low = col)
  19478. Return: AX = status (SYS_OK)
  19479. Note:    clears window to color set with "sys_setcolors" (AH=18h)
  19480. SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"
  19481. --------T-1514-------------------------------
  19482. INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
  19483.     AH = 14h
  19484. Return: AX = current state
  19485.         0000h MultiDOS Plus command prompt is background task
  19486.         0001h command prompt is foreground task
  19487. SeeAlso: AH=0Bh"MultiDOS"
  19488. --------T-1515-------------------------------
  19489. INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
  19490.     AH = 15h
  19491.     STACK:    DWORD    pointer to ASCIZ banner message for top of screen
  19492. Return: AX = status (SYS_OK)
  19493. SeeAlso: AH=14h"VMiX",AH=16h"VMiX"
  19494. --------T-1515-------------------------------
  19495. INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
  19496.     AH = 15h
  19497. Return: BX:AX -> system block (see #0383)
  19498. SeeAlso: AH=13h"MultiDOS"
  19499.  
  19500. Format of MultiDOS Plus 4.0 system block:
  19501. Offset    Size    Description    (Table 0383)
  19502.  00h    WORD    segment of system control block
  19503.  02h    WORD    redirection flag set by /NOREDIRECT
  19504.  04h    WORD    no-INT 10 flag set by /NO10
  19505.  06h    DWORD    old INT 10
  19506.  0Ah    DWORD    new INT 10
  19507.  0Eh    DWORD    pointer to WORD with current TCB offset (see #0382)
  19508.  12h    DWORD    pointer to WORD with idle task TCB offset
  19509.  16h    DWORD    pointer to WORD with foreground TCB offset (see #0382)
  19510.  1Ah    DWORD    pointer to WORD with MultiDOS TCB offset (see #0382)
  19511.  1Eh    WORD    Task Control Block size
  19512.  20h    WORD    number of TCBs
  19513.  22h    WORD    flag: EMS present
  19514.  24h    WORD    EMS page frame base segment
  19515.  26h    WORD    16K pages in EMS page frame
  19516.  28h    WORD    base segment for conventional memory tasks
  19517.  2Ah    WORD    conventional memory size in paragraphs
  19518.  2Ch    DWORD    pointer to list of queue pointers
  19519. --------T-1516-------------------------------
  19520. INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
  19521.     AH = 16h
  19522.     STACK:    DWORD    pointer to I/O Request Packet
  19523.         WORD    top left corner of window (high byte = row, low = col)
  19524.         WORD    bottom right corner of window (high = row, low = col)
  19525. Return: AX = status (SYS_OK or SYS_ERROR)
  19526. SeeAlso: AH=14h"VMiX",AH=17h"VMiX"
  19527. --------T-1516-------------------------------
  19528. INT 15 - MultiDOS Plus - INITIALIZATION
  19529.     AH = 16h
  19530. Note:    used internally during initialization; any other calls will cause
  19531.       unpredictable results
  19532. --------T-1517-------------------------------
  19533. INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
  19534.     AH = 17h
  19535. Return: AH = foreground color
  19536.     AL = background color
  19537. SeeAlso: AH=16h"VMiX",AH=18h"VMiX"
  19538. --------T-1517-------------------------------
  19539. INT 15 - MultiDOS Plus - MAP IRQ
  19540.     AH = 17h
  19541.     AL = IRQ to map (01h-0Fh)
  19542.     BX = offset of task control block (see #0382) to associate with IRQ
  19543. Return: AX = status
  19544.         0000h successful
  19545.         other invalid IRQ
  19546. Note:    the EMS map of the specified TCB is associated with the given interrupt
  19547. SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"
  19548. --------T-1518-------------------------------
  19549. INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
  19550.     AH = 18h
  19551.     STACK:    WORD    new background/foreground colors
  19552.             bits 3-0: foreground
  19553.             bits 7-4: background
  19554.             bits 15-8: unused
  19555. Return: AX = color
  19556. SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"
  19557. --------T-1518-------------------------------
  19558. INT 15 - MultiDOS Plus - UNMAP IRQ
  19559.     AH = 18h
  19560.     AL = IRQ to unmap (01h-0Fh)
  19561. Return: AX = status
  19562.         0000h successful
  19563.         0001h invalid IRQ
  19564. Note:    results are unpredictable if the IRQ has not been mapped
  19565. SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"
  19566. --------T-1519-------------------------------
  19567. INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
  19568.     AH = 19h
  19569.     STACK:    WORD    new background/foreground colors
  19570.             bits 3-0: foreground
  19571.             bits 7-4: background
  19572.             bits 15-8: unused
  19573. Return: AX = color
  19574. SeeAlso: AH=18h"VMiX"
  19575. --------T-1519-------------------------------
  19576. INT 15 - MultiDOS Plus - UNMAP ALL IRQs
  19577.     AH = 19h
  19578. Return: AX destroyed
  19579. Note:    for MultiDOS internal use only
  19580. SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"
  19581. --------T-151A-------------------------------
  19582. INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
  19583.     AH = 1Ah
  19584.     STACK:    WORD    interrupt number
  19585.         DWORD    pointer to register structure
  19586. Return: AX = returned flags
  19587. --------T-151A-------------------------------
  19588. INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
  19589.     AH = 1Ah
  19590.     DS:SI -> 8-byte name
  19591. Return: AL = status
  19592.         00h successful
  19593.         AH = semaphore number (20h-3Fh)
  19594.         04h out of string space
  19595. Notes:    all eight bytes of the name are significant
  19596.     if the name does not already exist, it is added to the name table and
  19597.       associated with a free semaphore number
  19598.     names cannot be destroyed
  19599. SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  19600. --------T-151B-------------------------------
  19601. INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
  19602.     AH = 1Bh
  19603.     STACK:    DWORD    source address
  19604.         DWORD    destination address
  19605.         WORD    number of words to move
  19606. Return: nothing
  19607. --------T-151B-------------------------------
  19608. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
  19609.     AH = 1Bh
  19610.     DS:SI -> 8-byte name
  19611. Return: AH = status
  19612.         00h successful
  19613.         02h invalid semaphore number
  19614.         03h caller already owns semaphore
  19615.         04h out of string space
  19616. Notes:    (see AH=01h"MultiDOS")
  19617.     equivalent to AH=1Ah followed by AH=01h
  19618. SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  19619. --------T-151C-------------------------------
  19620. INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
  19621.     AH = 1Ch
  19622.     STACK:    WORD    AND/OR pixel with background (00h = OR, 01h = AND)
  19623.         DWORD    pointer to object bitmap
  19624.         WORD    object width in pixels
  19625.         WORD    object height in pixels
  19626. Return: nothing
  19627. SeeAlso: AH=1Dh"VMiX"
  19628. --------T-151C-------------------------------
  19629. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
  19630.     AH = 1Ch
  19631.     DS:SI -> 8-byte name
  19632. Return: AH = status
  19633.         00h successful
  19634.         01h not semaphore owner
  19635.         02h invalid semaphore number
  19636.         04h out of string space
  19637. Notes:    (see AH=02h"MultiDOS")
  19638.     equivalent to AH=1Ah followed by AH=02h
  19639. SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"
  19640. --------T-151D-------------------------------
  19641. INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
  19642.     AH = 1Dh
  19643. Return: AX = current font number (00h-03h)
  19644. SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"
  19645. --------T-151D-------------------------------
  19646. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
  19647.     AH = 1Dh
  19648.     DS:SI -> 8-byte name
  19649. Return: AH = status
  19650.         00h semaphore not in use
  19651.         01h semaphore owned by another task
  19652.         02h invalid semaphore number
  19653.         03h caller owns semaphore
  19654.         04h out of string space
  19655. Notes:    (see AH=10h"MultiDOS")
  19656.     equivalent to AH=1Ah followed by AH=10h
  19657. SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"
  19658. --------T-151E-------------------------------
  19659. INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
  19660.     AH = 1Eh
  19661.     STACK: WORD new font number (00h-03h)
  19662. Return: AX = current font number (00h-03h)
  19663. SeeAlso: AH=1Dh"VMiX"
  19664. --------T-151E00-----------------------------
  19665. INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
  19666.     AX = 1E00h
  19667.     DX = event/trigger number (00h-3Fh)
  19668. Return: AH = status
  19669.         00h successful
  19670. SeeAlso: AX=1E01h,AX=1E02h
  19671. --------T-151E01-----------------------------
  19672. INT 15 - MultiDOS Plus - TRIGGER EVENT
  19673.     AX = 1E01h
  19674.     DX = event/trigger number (00h-3Fh)
  19675. Return: AH = status
  19676.         00h successful
  19677.         01h invalid event/trigger number
  19678. Notes:    schedules any task waiting for event; if no task is waiting, the event
  19679.       counter is incremented (and will roll over if it was 65535)
  19680.     may be invoked by interrupt handler
  19681. SeeAlso: AX=1E00h,AX=1E02h
  19682. --------T-151E02-----------------------------
  19683. INT 15 - MultiDOS Plus - WAIT FOR EVENT
  19684.     AX = 1E02h
  19685.     DX = event/trigger number (00h-3Fh)
  19686. Return: AH = status
  19687.         00h successful
  19688.         01h invalid event/trigger number
  19689. Note:    if the event counter is zero, the task is suspended until the event is
  19690.       triggered with AX=1E01h; else, the counter is decremented and the
  19691.       call returns immediately
  19692. SeeAlso: AX=1E00h,AX=1E01h
  19693. --------T-151E08-----------------------------
  19694. INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
  19695.     AX = 1E08h
  19696.     DX:BX -> context save handler (see #0384)
  19697.     DX:CX -> context restore handler (see #0384)
  19698. Return: nothing
  19699. Note:    handlers may be removed by setting addresses to 0000h:0000h
  19700.  
  19701. (Table 0384)
  19702. Values MultiDOS Plus context-switch handlers are called with:
  19703.     ES:BX -> task's TCB
  19704. Return: all registers preserved
  19705. --------T-151F-------------------------------
  19706. INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
  19707.     AH = 1Fh
  19708.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  19709.         WORD    bottom right corner of window
  19710. Return: AX = status (SYS_OK)
  19711. SeeAlso: AH=14h"VMiX",AH=18h"VMiX"
  19712. --------T-151F-------------------------------
  19713. INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
  19714.     AH = 1Fh
  19715. Return: BX = first segment of conventional memory
  19716.     DX = first segment of EMS swap frame into which MultiDOS will load
  19717.         programs
  19718. --------T-1520-------------------------------
  19719. INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
  19720.     AH = 20h
  19721. Return: AX = current state
  19722.         0000h multitasking enabled
  19723.         other TCB of task that disabled multitasking
  19724. SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"
  19725. --------c-152000-----------------------------
  19726. INT 15 U - DOS 3.0+ PRINT.COM - DISABLE CRITICAL REGION FLAG
  19727.     AX = 2000h
  19728. Return: nothing
  19729. Desc:    stop setting user flag on entry to PRINT critical region
  19730. Note:    also supported by PC Network v1.00 RECEIVER.COM
  19731. SeeAlso: AX=2001h
  19732. --------c-152001-----------------------------
  19733. INT 15 U - DOS 3.0+ PRINT.COM - SET CRITICAL REGION FLAG
  19734.     AX = 2001h
  19735.     ES:BX -> byte which is to be incremented while in a DOS call
  19736. Return: nothing
  19737. Desc:    specify a user flag which PRINT should set to let an interested
  19738.       application know it is in a critical region
  19739. Note:    also supported by PC Network v1.00 RECEIVER.COM
  19740. SeeAlso: AX=2000h
  19741. --------O-152010-----------------------------
  19742. INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
  19743.     AX = 2010h
  19744.     ???
  19745. Return: ???
  19746. SeeAlso: AX=2011h
  19747. --------O-152011-----------------------------
  19748. INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
  19749.     AX = 2011h
  19750.     ???
  19751. Return: ???
  19752. SeeAlso: AX=2010h
  19753. --------B-1521-------------------------------
  19754. INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
  19755.     AH = 21h
  19756.     AL = subfunction
  19757.         00h read POST log
  19758.         01h write POST log
  19759.         BH = device ID
  19760.         BL = error code
  19761. Return: CF clear if successful
  19762.     CF set on error
  19763.     AH = status
  19764.         00h OK
  19765.         01h list full
  19766.         02h unsupported subfunction
  19767.         80h invalid command
  19768.         86h unsupported function
  19769.     if function 00h:
  19770.        BX = number of error codes stored
  19771.        ES:DI -> error log
  19772. Notes:    the log is a series of words, the first byte of which identifies the
  19773.       error code and the second the device.
  19774.     supported by AMI PCI BIOS
  19775.     IBM considers this a required BIOS function
  19776.     if the device ID is FFh, the "error code" is the actual device number
  19777.       minus 255 (thus these devices have no specific error codes)
  19778. SeeAlso: AH=23h"SYSTEM",AH=24h"SYSTEM"
  19779. --------B-1522-------------------------------
  19780. INT 15 - SYSTEM - later PS/2s - LOCATE ROM BASIC
  19781.     AH = 22h
  19782. Return: CF set on error
  19783.         AH = status (86h if function not supported)
  19784.     CF clear on success
  19785.         AH = 00h
  19786.         ES:BX -> ROM BASIC
  19787. Notes:    if this function is not supported, ROM BASIC is at F600h:0000h
  19788.     IBM classifies this function as optional
  19789. SeeAlso: INT 86"BASIC",INT F0"BASIC"
  19790. --------B-152300-----------------------------
  19791. INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET ??? CMOS DATA
  19792.     AX = 2300h
  19793. Return: CF clear if successful
  19794.         CL = value of CMOS location 2Dh
  19795.         CH = value of CMOS location 2Eh
  19796.     CF set on error
  19797.         AH = error code (80h,86h)
  19798. Note:    IBM classifies this function as optional
  19799. SeeAlso: AX=2301h,AX=2304h,AX=2305h
  19800. --------B-152301-----------------------------
  19801. INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - SET ??? CMOS DATA
  19802.     AX = 2301h
  19803.     CL = new value for CMOS location 2Dh
  19804.     CH = new value for CMOS location 2Eh
  19805. Return: CF clear if successful
  19806.     CF set on error
  19807.         AH = error code (80h,86h)
  19808. Notes:    sets the contents of CMOS locations 2Dh and 2Eh
  19809.     IBM classifies this function as optional
  19810. SeeAlso: AX=2300h,AX=2304h,AX=2305h
  19811. --------B-152302-----------------------------
  19812. INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET ROM STARTUP VIDEO REG TABLES
  19813.     AX = 2302h
  19814.     BL = data index (00h-0Dh) (see #0385)
  19815. Return: ES:BX -> table for register (see #0386,#0387)
  19816.     CX = size of table in bytes (may be 0000h)
  19817. Note:    IBM classifies this function as optional
  19818. SeeAlso: AX=2300h,AX=2301h,AX=2303h
  19819.  
  19820. (Table 0385)
  19821. Values for PS/1 ROM startup video register tables:
  19822.  00h    DAC registers
  19823.  01h    ???
  19824.  02h    Palette registers
  19825.  03h-0Dh ???
  19826.  
  19827. Format of PS/1 ROM startup DAC register table:
  19828. Offset    Size    Description    (Table 0386)
  19829.  00h    WORD    number of DAC registers in table
  19830.  02h    var    array of 3-byte DAC register values, starting at register 00h
  19831. SeeAlso: #0385
  19832.  
  19833. Format of PS/1 ROM startup Palette register table:
  19834. Offset    Size    Description    (Table 0387)
  19835.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  19836.  10h    BYTE    border color
  19837. SeeAlso: #0385,#0017
  19838. --------B-152303-----------------------------
  19839. INT 15 U - IBM BIOS - SMART ENERGY SYSTEM - ???
  19840.     AX = 2303h
  19841.     BX = ??? ('x')
  19842.     DX = 'y' and 'z'
  19843.         bits 15-7 = 'y'
  19844.         bits 6-3 unused
  19845.         bits 2-0 = 'z'
  19846.     DI = ??? (0352h)
  19847. Return: ???
  19848. Notes:    performs graphics functions, writes to segment A000h and VGA I/O ports
  19849.     IBM classifies this function as optional
  19850. --------B-152304-----------------------------
  19851. INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - SYSTEM SETUP
  19852.     AX = 2304h
  19853.     DX = segment of 32K buffer
  19854. Return: CF clear if successful
  19855.         AX = 0003h (left over from setting video mode 3)
  19856.         BX,CX,DX,BP,DS,ES destroyed
  19857.     CF set on error
  19858.         AH = error code (80h,86h)
  19859. Desc:    run system setup utility, and optionally save any changed settings to
  19860.       CMOS RAM
  19861. Note:    IBM classifies this function as optional
  19862. SeeAlso: AX=2301h,AX=2305h
  19863. --------B-152305-----------------------------
  19864. INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET PROCESSOR SPEED
  19865.     AX = 2305h
  19866. Return: CF clear if successful
  19867.         AL = processor speed in MHz
  19868.     CF set on error
  19869.         AL = FFh (speed unknown or >80 MHz)
  19870.         AL = error code (80h,86h = unsupported function)
  19871. Note:    IBM classifies this function as optional
  19872. SeeAlso: AX=2301h,AX=2304h,AH=BCh
  19873. --------b-152400-----------------------------
  19874. INT 15 - SYSTEM - later PS/2s - DISABLE A20 GATE
  19875.     AX = 2400h
  19876. Return: CF clear if successful
  19877.         AH = 00h
  19878.     CF set on error
  19879.         AH = status
  19880.         01h keyboard controller is in secure mode
  19881.         86h function not supported
  19882. Notes:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  19883.     IBM classifies this function as optional
  19884. BUG:    AMI BIOS v1.00.03.AV0M never reports an error on failure to disable
  19885.       the A20 gate; it simply writes 0 to PORT 0092h
  19886. SeeAlso: AX=2401h,AX=2402h,AX=2403h,PORT 0092h
  19887. --------b-152401-----------------------------
  19888. INT 15 - SYSTEM - later PS/2s - ENABLE A20 GATE
  19889.     AX = 2401h
  19890. Return: CF clear if successful
  19891.         AH = 00h
  19892.     CF set on error
  19893.         AH = status
  19894.         01h keyboard controller is in secure mode
  19895.         86h function not supported
  19896. Notes:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  19897.     IBM classifies this function as optional
  19898. SeeAlso: AX=2400h,AX=2402h,PORT 0092h
  19899. --------b-152402-----------------------------
  19900. INT 15 - SYSTEM - later PS/2s - GET A20 GATE STATUS
  19901.     AX = 2402h
  19902. Return: CF clear if successful
  19903.         AH = 00h
  19904.         AL = current state (00h disabled, 01h enabled)
  19905.         CX = ??? (set to 0000h-000Bh or FFFFh by AMI BIOS v1.00.03.AV0M)
  19906.         FFFFh if keyboard controller does not become ready within C000h
  19907.              read attempts
  19908.     CF set on error
  19909.         AH = status
  19910.         01h keyboard controller is in secure mode
  19911.         86h function not supported
  19912. Notes:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  19913.     IBM classifies this function as optional
  19914. SeeAlso: AX=2400h,AX=2401h
  19915. --------b-152403-----------------------------
  19916. INT 15 - SYSTEM - later PS/2s - QUERY A20 GATE SUPPORT
  19917.     AX = 2403h
  19918. Return: CF clear if successful
  19919.         AH = 00h
  19920.         BX = status of A20 gate support (see #0388)
  19921.     CF set on error
  19922.         AH = status
  19923.         01h keyboard controller is in secure mode
  19924.         86h function not supported
  19925. Notes:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  19926.     IBM classifies this function as optional
  19927. BUG:    at one point early in processing INT 15/AH=24h, the AMI PCI BIOS
  19928.       version 1.00.05.AX1 compares whether AL==03h instead of AL>=03h,
  19929.       thus causing a random branch on any value of AL greater than 3.
  19930. SeeAlso: AX=2402h
  19931.  
  19932. Bitfields for A20 gate support status:
  19933. Bit(s)    Description    (Table 0388)
  19934.  0    supported on keyboard controller
  19935.  1    supported with bit 1 of I/O port 92h
  19936.  14-2    reserved
  19937.  15    additional data is available (location not yet defined)
  19938. --------T-153000-----------------------------
  19939. INT 15 - Object Kernel for DOS - INSTALLATION CHECK
  19940.     AX = 3000h
  19941. Return: AX:BX = 4F42h:4A21h ('OBJ!') if installed
  19942.         CX = resident segment
  19943. Program: the Object Kernel is a program by M.W. Pieters which is currently
  19944.       under development
  19945. Note:    Central Point's CPBACKUP v9 calls INT 15/AX=3000h at startup, but it
  19946.       may be checking for a different program's presence
  19947. SeeAlso: AX=3001h,AX=3008h
  19948. --------T-153001-----------------------------
  19949. INT 15 - Object Kernel for DOS - GET STATUS BLOCK
  19950.     AX = 3001h
  19951. Return: AX = FFFFh
  19952.     ES:DI -> status block
  19953. SeeAlso: AX=3000h,AX=3008h
  19954. --------T-153002-----------------------------
  19955. INT 15 - Object Kernel for DOS - KILL PROCESS
  19956.     AX = 3002h
  19957.     (not yet implemented)
  19958. SeeAlso: AX=3000h
  19959. --------T-153003-----------------------------
  19960. INT 15 - Object Kernel for DOS - STOP PROCESS
  19961.     AX = 3003h
  19962.     (not yet implemented)
  19963. SeeAlso: AX=3000h
  19964. --------T-153004-----------------------------
  19965. INT 15 - Object Kernel for DOS - START PROCESS
  19966.     AX = 3004h
  19967.     (not yet implemented)
  19968. SeeAlso: AX=3000h
  19969. --------T-153005-----------------------------
  19970. INT 15 - Object Kernel for DOS - RESTART PROCESS
  19971.     AX = 3005h
  19972.     (not yet implemented)
  19973. SeeAlso: AX=3000h
  19974. --------T-153006-----------------------------
  19975. INT 15 - Object Kernel for DOS - EXECUTE PROCESS
  19976.     AX = 3006h
  19977.     (not yet implemented)
  19978. SeeAlso: AX=3000h
  19979. --------T-153007-----------------------------
  19980. INT 15 - Object Kernel for DOS - LIST PROCESSES
  19981.     AX = 3007h
  19982.     (not yet implemented)
  19983. SeeAlso: AX=3000h
  19984. --------T-153008-----------------------------
  19985. INT 15 - Object Kernel for DOS - SWITCH ObjectKernel ON/OFF
  19986.     AX = 3008h
  19987.     BH = new state (00h disabled, 01h enabled)
  19988. Return: AX = FFFFh
  19989. SeeAlso: AX=3000h,AX=3009h
  19990. --------T-153009-----------------------------
  19991. INT 15 - Object Kernel for DOS - RESERVED FOR FUTURE USE
  19992.     AX = 3009h to 30FFh
  19993. SeeAlso: AX=3000h
  19994. Program: the Object Kernel is a program by M.W. Pieters which is currently
  19995.       under development
  19996. ----------153D-------------------------------
  19997. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  19998.     AH = 3Dh
  19999. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  20000. ----------153E-------------------------------
  20001. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  20002.     AH = 3Eh
  20003. SeeAlso: AH=3Dh"IBM",AH=3Fh"IBM"
  20004. ----------153F-------------------------------
  20005. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  20006.     AH = 3Fh
  20007. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  20008. --------B-1540-------------------------------
  20009. INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
  20010.     AH = 40h
  20011.     AL = subfunction
  20012.         00h get system profile in CX and BX
  20013.         01h set system profile from CX and BX
  20014.         02h get internal modem profile in BX
  20015.         03h set internal modem profile from BX
  20016. Return: CF clear if successful
  20017.         AH = 00h
  20018.     CF set on error
  20019.         AH = status (80h = profile execution failed)
  20020. --------V-154000-----------------------------
  20021. INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
  20022.     AX = 4000h
  20023. Return: AX = 4000h
  20024.     CL = timeout in minutes, 00h if disabled
  20025. SeeAlso: AX=4001h,AX=4600h
  20026. --------V-154001-----------------------------
  20027. INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
  20028.     AX = 4001h
  20029.     CL = timeout in minutes, 00h to disable
  20030. Return: AL = status
  20031.         00h timeout modified
  20032.         01h timeout cannot be modified
  20033.         40h timeout cannot be modified
  20034.     CL = timeout in minutes, 00h if disabled
  20035. SeeAlso: AX=4000h,AX=4601h
  20036. --------B-1541-------------------------------
  20037. INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE and some others)
  20038.     AH = 41h
  20039.     AL = condition type (see #0389)
  20040.     BH = condition compare or mask value
  20041.     BL = timeout value times 55 milliseconds
  20042.         00h means no timeout
  20043.     DX = I/O port address if AL bit 4 set
  20044.     ES:DI -> user byte if AL bit 4 clear
  20045. Return: after event or timeout occurs
  20046. Note:    call AH=C0h and examine bit 3 of feature byte 1 to determine whether
  20047.       this function is supported
  20048. SeeAlso: AH=83h,AH=86h,AH=C0h
  20049.  
  20050. Bitfields for external event wait condition type:
  20051. Bit(s)    Description    (Table 0389)
  20052.  0-2    condition to wait for
  20053.     0 any external event
  20054.     1 compare and return if equal
  20055.     2 compare and return if not equal
  20056.     3 test and return if not zero
  20057.     4 test and return if zero
  20058.  3    reserved
  20059.  4    1=port address, 0=user byte
  20060.  5-7    reserved
  20061. --------B-1542-------------------------------
  20062. INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX)
  20063.     AH = 42h
  20064.     AL = suspend type
  20065.         00h to use system profile
  20066.         01h to force suspend regardless of system profile
  20067. Return: nothing
  20068. Note:    the HP 95LX apparently suspends regardless of the value in AL; on
  20069.       power-up, execution will resume following the instruction calling
  20070.       this function
  20071. SeeAlso: AH=44h
  20072. --------b-154280-----------------------------
  20073. INT 15 - Compaq SLT/286 - ENTER STANDBY
  20074.     AX = 4280h
  20075. Return: AH = 42h
  20076.     CF clear if successful
  20077.     CF set if unable to enter standby
  20078. SeeAlso: AX=4600h,AX=5307h/CX=0001h"STAND-BY"
  20079. --------B-1543-------------------------------
  20080. INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
  20081.     AH = 43h
  20082. Return: AL = status bits (see #0390)
  20083.  
  20084. Bitfields for Convertible system status:
  20085. Bit(s)    Description    (Table 0390)
  20086.  7    power low
  20087.  6    external power in use
  20088.  5    standby power lost
  20089.  4    power activated by alarm
  20090.  3    internal modem powered on
  20091.  2    RS232/parallel adapter powered on
  20092.  1    reserved
  20093.  0    LCD detached
  20094. --------B-1544-------------------------------
  20095. INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
  20096.     AH = 44h
  20097.     AL = new modem power state (00h power off, 01h power on)
  20098. Return: nothing
  20099. SeeAlso: AH=42h
  20100. --------b-1544C0-----------------------------
  20101. INT 15 - Olivetti Quaderno - INITIALIZE DIGITAL SIGNAL PROCESSING???
  20102.     AX = 44C0h
  20103.     ES:DI -> new DSP procedure (exchanged with CMOS[28h])
  20104.     ES:SI -> ??? buffer
  20105. Return: ES:DI -> old DSP procedure
  20106.     ES:SI buffer filled with ten bytes from CMOS (addresses 14h-1Ch)
  20107.       followed by 00h (addresses 15h-1Ch copied only if less than 21h)
  20108. Note:    this function is also supported by XBIOS.COM
  20109. SeeAlso: AX=44C9h
  20110. --------b-1544C1-----------------------------
  20111. INT 15 - Olivetti Quaderno - ???
  20112.     AX = 44C1h
  20113.     ???
  20114. Return: ???
  20115. Note:    this function is also supported by XBIOS.COM
  20116. SeeAlso: AX=44C9h
  20117. --------b-1544C2-----------------------------
  20118. INT 15 - Olivetti Quaderno - ???
  20119.     AX = 44C2h
  20120.     DL = byte to be written to I/O port 350h
  20121. Note:    this function is also supported by XBIOS.COM
  20122. SeeAlso: AX=44C3h,AX=44C9h
  20123. --------b-1544C3-----------------------------
  20124. INT 15 - Olivetti Quaderno - GET ???
  20125.     AX = 44C3h
  20126. Return: DH = bitfields (see #0391)
  20127.     DL = value read from I/O port 350h
  20128. Note:    this function is also supported by XBIOS.COM
  20129. SeeAlso: AX=44C2h,AX=44C9h
  20130.  
  20131. Bitfields for Olivetti Quaderno ???:
  20132. Bit(s)    Description    (Table 0391)
  20133.  5-7    5-7 read from I/O port 351h
  20134.  2-4    zero
  20135.  1-0    "tres complique"
  20136. --------b-1544C4-----------------------------
  20137. INT 15 - Olivetti Quaderno - ???
  20138.     AX = 44C4h and 44C5h
  20139.     ???
  20140. Return: ???
  20141. Note:    this function is also supported by XBIOS.COM
  20142. SeeAlso: AX=44C9h
  20143. --------b-1544C6-----------------------------
  20144. INT 15 - Olivetti Quaderno - READ LCD
  20145.     AX = 44C6h
  20146. Return: DX = FFFFh clock is displayed on LCD display
  20147.     DX = other: hex number displayed in first four positions of display
  20148.     BH = left alphanumeric character on display (see #0392)
  20149.     BL = right alphanumeric character on display (see #0392)
  20150.     CL = colon flags (see #0393)
  20151. Notes:    the LCD display has the format HH:HH:AA, where H is a hex digit and A
  20152.       is an alphanumeric character
  20153.     this function is also supported by XBIOS.COM
  20154. SeeAlso: AX=44C7h,AX=44C9h
  20155.  
  20156. (Table 0392)
  20157. Values for Olivetti Quaderno LCD alphanumeric characters:
  20158.  00h-0Fh hex digit
  20159.  2Bh    "+"
  20160.  2Dh    "-"
  20161.  30h-39h "0" to "9"
  20162.  41h-5Ah "A" to "Z"
  20163.  61h-6Ah "a" to "z"
  20164.  else    blank
  20165.  
  20166. Bitfields for Olivetti Quaderno LCD colon flags:
  20167. Bit(s)    Description    (Table 0393)
  20168.  0    left colon on
  20169.  1    right colon on
  20170.  2-7    unused
  20171. --------b-1544C7-----------------------------
  20172. INT 15 - Olivetti Quaderno - WRITE LCD
  20173.     AX = 44C7h
  20174.     DX = hex display
  20175.         FFFFh display clock and "HI", "Md", or "Lo"
  20176.         BH,BL,CL unused
  20177.         other: display specified hex number in first four positions
  20178.         BH = left alphanumeric character on display (see #0392)
  20179.         BL = right alphanumeric character on display (see #0392)
  20180.         CL = colon flags (see #0393)
  20181. Return: nothing
  20182. Note:    this function is also supported by XBIOS.COM
  20183. SeeAlso: AX=44C6h
  20184. --------b-1544C8-----------------------------
  20185. INT 15 - Olivetti Quaderno - ???
  20186.     AX = 44C8h
  20187.     CL = ??? (00h,02h,21h)
  20188.     CH = ???
  20189.     ???
  20190. Return: ???
  20191. Note:    this function is also supported by XBIOS.COM
  20192. SeeAlso: AX=44C9h
  20193. --------b-1544C9-----------------------------
  20194. INT 15 - Olivetti Quaderno - GET XBIOS VERSION
  20195.     AX = 44C9h
  20196. Return: AL = major version
  20197.     AH = minor version
  20198. Note:    this function is also supported by XBIOS.COM
  20199. --------B-1544F1-----------------------------
  20200. INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
  20201.     AX = 44F1h
  20202.     DS:DX -> byte with 00h ???
  20203. Return: ???
  20204. Note:    used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
  20205.       between USER and SUPERVISOR security level
  20206. SeeAlso: AX=44F2h,AX=44F3h
  20207. --------B-1544F2BX0604-----------------------
  20208. INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
  20209.     AX = 44F2h
  20210.     BX = 0604h ???
  20211. Return: CF = ???
  20212.     AH = ???
  20213.     DX = ???
  20214. Note:    used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
  20215.       between USER and SUPERVISOR security level
  20216. SeeAlso: AX=44F1h,AX=44F3h
  20217. --------B-1544F3-----------------------------
  20218. INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
  20219.     AX = 44F3h
  20220.     DS:DX -> byte with 00h or 01h ???
  20221. Return: DS:DX -> changed ???
  20222. Note:    used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
  20223.       between USER and SUPERVISOR security level
  20224. SeeAlso: AX=44F1h,AX=44F2h
  20225. --------b-1545-------------------------------
  20226. INT 15 U - HP 100LX/200LX - SET DISPLAY CONTROL STATUS
  20227.     AH = 45h
  20228.     AL = new display control status
  20229.         bit 0: DISPCTL flag +C instead of -C
  20230.         bit 1: DISPCTL flag +K instead of -K
  20231. SeeAlso: AH=46h"HP",AH=47h"HP"
  20232. --------b-1546-------------------------------
  20233. INT 15 U - HP 100LX/200LX - SET POWER OFF TIMEOUT
  20234.     AH = 46h
  20235.     BX = timeout value in ticks
  20236.         0000h inhibit auto power off
  20237. Note:    the 200LX default timeout is 0CCDh = 3277 ticks = approx. 3 min.
  20238. SeeAlso: AH=45h"HP",AH=47h"HP"
  20239. --------b-154600-----------------------------
  20240. INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
  20241.     AX = 4600h
  20242. Return: AH = modem configuration information (see #0394)
  20243.     AL = power conservation status information (see #0395)
  20244.     BH = default system inactivity timeout (1-21 minutes)
  20245.     BL = current system inactivity timeout (1-21 minutes)
  20246.     CH = default video display inactivity timeout (1-63 minutes)
  20247.     CL = current video display inactivity timeout (1-63 minutes)
  20248.     DH = default fixed disk drive inactivity timeout (1-21 minutes)
  20249.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  20250. SeeAlso: AX=4280h,AX=4601h,INT 77
  20251.  
  20252. Bitfields for Compaq SLT/286 modem configuration information:
  20253. Bit(s)    Description    (Table 0394)
  20254.  0    powerup state (0 off, 1 on)
  20255.  1    modem installed
  20256.  2    IRQ line assignment (0 IRQ 4, 1 IRQ 3)
  20257.  3    COM port assignment (0 = COM 2, 1 = COM 1)
  20258.  4    modem state (0 not assigned, 1 assigned)
  20259.  5    modem is on
  20260.  
  20261. Bitfields for Compaq SLT/286 power conservation status:
  20262. Bit(s)    Description    (Table 0395)
  20263.  0    power source (0 internal, 1 external)
  20264.  1-2    low battery state
  20265.     00 no low battery condition
  20266.     01 low battery 1
  20267.     10 reserved
  20268.     11 low battery 2
  20269.  3-4    power conservation mode
  20270.     00 automatic, 01 on, 10 off, 11 reserved
  20271. --------b-154601-----------------------------
  20272. INT 15 - Compaq SLT/286 - MODIFY POWER CONSERVATION/MODEM CONFIGURATION
  20273.     AX = 4601h
  20274.     BL = system inactivity timeout (1-21 minutes)
  20275.         FFh do not change
  20276.     CL = video display inactivity timeout (1-63 minutes)
  20277.         FFh do not change
  20278.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  20279.         FFh do not change
  20280.     DH = new modem state (00h turn off, 01h turn on, FFh don't change)
  20281. Return: CF clear if successful
  20282.         AH = 00h
  20283.         BL = current system inactivity timeout (1-21 minutes)
  20284.         CL = current video display inactivity timeout (1-63 minutes)
  20285.         DL = current fixed disk drive inactivity timeout (1-21 minutes)
  20286.         DH = modem state (FFh unchanged, 00h turned off, 01h turned on)
  20287.     CF set on error
  20288.         AH = error code
  20289.         01h input is out of range
  20290.         02h no modem present
  20291. SeeAlso: AX=4600h,INT 77
  20292. --------b-154604-----------------------------
  20293. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - GET ???
  20294.     AX = 4604h
  20295. Return: CF clear if successful
  20296.         AL = byte read from I/O port 03F8h
  20297.     CF set on error (not supported)
  20298.         AH = 86h (unsupported function)
  20299. Note:    also supported by 7/26/93 LTE Lite 386 ROM
  20300. --------b-154605-----------------------------
  20301. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - ???
  20302.     AX = 4605h
  20303. Return: CF clear if successful
  20304.     CF set on error (not supported)
  20305.         AH = 86h (unsupported function)
  20306. Note:    this function is a NOP (other than clearing CF) in the 08/05/93 version
  20307.       of the Contura 486/486c/486cx and "Aladdin" ROM, and the 7/26/93
  20308.       LTE Lite 386 ROM
  20309. --------b-1547-------------------------------
  20310. INT 15 U - HP 100LX/200LX - GET/SET DISPLAY CONTRAST
  20311.     AH = 47h
  20312.     AL = subfunction
  20313.        00h set contrast
  20314.         BL = new contrast
  20315.             (00h-0Fh, 0Fh is darkest, 10h-FFh are same as 0Fh)
  20316.        other get current contrast
  20317. Return: AL = contrast (00h-0Fh, 0Fh is darkest)
  20318. Note:    may be for backward compatibility with HP95LX, as INT 15/AH=62h does
  20319.       substantially the same thing as this function
  20320. SeeAlso: AH=45h"HP",AH=48h"HP",AH=62h"HP"
  20321. --------b-1548-------------------------------
  20322. INT 15 U - HP 100LX/200LX - SET BUZZER VOLUME
  20323.     AH = 48h
  20324.     AL = volume (00h-03h; 03h is loudest, 04h-FFh are same as 03h)
  20325. SeeAlso: AH=47h"HP"
  20326. --------S-1549-------------------------------
  20327. INT 15 U - HP 100LX/200LX - SERIAL INTERFACE SELECT
  20328.     AH = 49h
  20329.     AL = serial interface
  20330.         00h wired (COM1)
  20331.         01h infrared
  20332. Note:    interface should only be changed in deactivated state (see AH=4Ah)
  20333. SeeAlso: AH=4Ah"HP"
  20334. --------J-154900-----------------------------
  20335. INT 15 - Far East MS-DOS - GET BIOS TYPE
  20336.     AX = 4900h
  20337. Return: CF clear if successful
  20338.         AH = 00h
  20339.         BL = BIOS mode
  20340.         00h DOS/V
  20341.         01h standard DBCS DOS (hardware DBCS support)
  20342.     CF set on error
  20343.         AH = 86h (function not supported)
  20344. Note:    in practice, DOS/J returns AH=86h; AX DOS does not support this call
  20345. SeeAlso: AH=50h,INT 21/AH=30h
  20346. --------S-154A-------------------------------
  20347. INT 15 U - HP 100LX/200LX - SERIAL INTERFACE CONTROL
  20348.     AH = 4Ah
  20349.     AL = control
  20350.         00h deactivate
  20351.         01h activate
  20352. Note:    interface selected with AH=49h will be (de)activated
  20353. SeeAlso: AH=49h"HP",AH=4Bh"HP"
  20354. --------b-154B-------------------------------
  20355. INT 15 U - HP 100LX/200LX - ADJUST SYSTEM TIME
  20356.     AH = 4Bh
  20357. Desc:    adjust system time based on real-time clock
  20358. SeeAlso: AH=4Ah"HP",INT 1A/AH=02h,INT 21/AH=2Ch
  20359. --------b-154DD4-----------------------------
  20360. INT 15 - HP 95LX/100LX/200LX - INSTALLATION CHECK
  20361.     AX = 4DD4h
  20362. Return: BX = 4850h ("HP") if HP 95LX/100LX/200LX
  20363.         CX = model
  20364.         0101h HP 95LX
  20365.         0102h HP 100LX/200LX
  20366.         DH = ???
  20367.         02h HP 200LX 2MB BIOS 1.01 A D german
  20368.         DL = ???
  20369.         00h HP 95LX
  20370.         01h HP 200LX 2MB BIOS 1.01 A D german
  20371. SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h
  20372. SeeAlso: INT 61"HP 95LX"
  20373. --------b-154E-------------------------------
  20374. INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
  20375.     AH = 4Eh
  20376.     AL = light sleep
  20377.         00h disabled
  20378.         01h enabled
  20379. Note:    when light sleep is disabled, the system will continue running at full
  20380.       speed; when enabled, it may automatically slow to conserve batteries
  20381. SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h
  20382. ----------154E-------------------------------
  20383. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  20384.     AH = 4Eh
  20385. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  20386. --------B-154F-------------------------------
  20387. INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
  20388.     AH = 4Fh
  20389.     AL = hardware scan code (see #0005)
  20390.     CF set
  20391. Return: CF set to continue processing scan code
  20392.        AL = possibly-altered hardware scan code (see #0005)
  20393.     CF clear
  20394.        scan code should be ignored
  20395. Notes:    called by INT 09 handler to translate scan codes; the INT 09 code does
  20396.       not examine the scan code it reads from the keyboard until after
  20397.       this function returns.  This permits software to rearrange the
  20398.       keyboard; for example, swapping the CapsLock and Control keys, or
  20399.       turning the right Shift key into Enter.
  20400.     DOS 6 KEYB.COM will not pass through this function if Ctrl-Alt-Del is
  20401.       pressed and a SmartDrive v4-compatible cache is installed which has
  20402.       dirty cache buffers; some other disk caches such as HyperDisk
  20403.       operate similarly in order to prevent loss of cached data which has
  20404.       not yet been written to disk
  20405.     IBM classifies this function as required
  20406. SeeAlso: INT 09,INT 15/AH=C0h
  20407. --------J-1550-------------------------------
  20408. INT 15 - DOS/V - FONT SUBSYSTEM ACCESS
  20409.     AH = 50h
  20410.     AL = which function address to retrieve
  20411.         00h "read font" function
  20412.         01h "write font" function
  20413.     BL = 00h
  20414.     BH = character size (00h single-byte, 01h double-byte)
  20415.     DH = width of character cell
  20416.     DL = height of character cell
  20417.     BP = code page (see #0396)
  20418. Return: CF clear if successful
  20419.         AH = 00h
  20420.         ES:BX -> requested function's address
  20421.     CF set on error
  20422.         AH = error code (see #0397)
  20423. SeeAlso: AH=49h
  20424.  
  20425. (Table 0396)
  20426. Values for DOS/V code page:
  20427.  0    default
  20428.  437    US English
  20429.  932    Japanese
  20430.  934    Korea
  20431.  936    China
  20432.  938    Taiwan
  20433. SeeAlso: #1446
  20434.  
  20435. (Table 0397)
  20436. Values for DOS/V error code:
  20437.  01h    invalid font type in BH
  20438.  02h    BL not zero
  20439.  03h    invalid font size
  20440.  04h    invalid code page
  20441.  80h    unsupported function (PC)
  20442.  86h    unsupported function (XT)
  20443. SeeAlso: #1366
  20444. --------T-1550-------------------------------
  20445. INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
  20446.     AH = 50h
  20447.     BX = segment of page directory table
  20448.     CX = page number of page table
  20449. SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"
  20450. --------T-1551-------------------------------
  20451. INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
  20452.     AH = 51h
  20453.     STACK:    DWORD    selector:offset of function
  20454. Return: registers as returned by function
  20455. Note:    executes function with privilege level 0 (highest privilege)
  20456. SeeAlso: AH=10h"VMiX",AH=52h"VMiX"
  20457. --------B-155101-----------------------------
  20458. INT 15 - SYSTEM - later PS/2s - EXPANSION UNIT, RETURN CONFIGURATION NUMBER
  20459.     AX = 5101h
  20460. Return: CF set if successful
  20461.         AH = 00h
  20462.         AL = current configuration number
  20463.         00h system unit only
  20464.         FFh configuration not recognized
  20465.         BX = status flag
  20466.         bits 0-14: reserved
  20467.         bit 15: additional data is available (location TBD)
  20468.     CF clear on error
  20469.         AH = status
  20470.         01h expansion unit is not present
  20471.         86h function not supported
  20472. Note:    CF convention is the reverse of the standard convention for this
  20473.       interrupt.  (Perhaps a typo in the IBM BIOS Tech Ref?)
  20474. --------T-1552-------------------------------
  20475. INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
  20476.     AH = 52h
  20477. SeeAlso: AH=50h"VMiX",AH=51h"VMiX"
  20478. --------d-1552-------------------------------
  20479. INT 15 C - IBM/MS INT 13 Extensions - MEDIA EJECT INTERCEPT
  20480.     AH = 52h
  20481.     DL = drive number
  20482. Return: CF clear if OK to eject media
  20483.         AH = 00h
  20484.     CF set if ejection disallowed
  20485.         AH = error code (B1h,B3h) (see #0166)
  20486. Note:    called by the IBM/MS INT 13 Extensions driver/BIOS when an ejection
  20487.       request is made
  20488. SeeAlso: INT 13/AH=46h"INT 13 Extensions"
  20489. --------p-155300-----------------------------
  20490. INT 15 - Advanced Power Management v1.0+ - INSTALLATION CHECK
  20491.     AX = 5300h
  20492.     BX = device ID of system BIOS (0000h)
  20493. Return: CF clear if successful
  20494.         AH = major version (BCD)
  20495.         AL = minor version (BCD)
  20496.         BX = 504Dh ("PM")
  20497.         CX = flags (see #0398)
  20498.     CF set on error
  20499.         AH = error code (06h,09h,86h) (see #0399)
  20500. BUG:    early versions of the Award Modular BIOS with built-in APM support
  20501.       reportedly do not set BX on return
  20502.  
  20503. Bitfields for APM flags:
  20504. Bit(s)    Description    (Table 0398)
  20505.  0    16-bit protected mode interface supported
  20506.  1    32-bit protected mode interface supported
  20507.  2    CPU idle call reduces processor speed
  20508.  3    BIOS power management disabled
  20509.  4    BIOS power management disengaged (APM v1.1)
  20510.  5-7    reserved
  20511.  
  20512. (Table 0399)
  20513. Values for APM error code:
  20514.  01h    power management functionality disabled
  20515.  02h    interface connection already in effect
  20516.  03h    interface not connected
  20517.  04h    real-mode interface not connected
  20518.  05h    16-bit protected-mode interface already connected
  20519.  06h    16-bit protected-mode interface not supported
  20520.  07h    32-bit protected-mode interface already connected
  20521.  08h    32-bit protected-mode interface not supported
  20522.  09h    unrecognized device ID
  20523.  0Ah    invalid parameter value in CX
  20524.  0Bh    (APM v1.1) interface not engaged
  20525.  0Ch    (APM v1.2) function not supported
  20526.  0Dh    (APM v1.2) Resume Timer disabled
  20527.  0Eh-1Fh reserved for other interface and general errors
  20528.  20h-3Fh reserved for CPU errors
  20529.  40h-5Fh reserved for device errors
  20530.  60h    can't enter requested state
  20531.  61h-7Fh reserved for other system errors
  20532.  80h    no power management events pending
  20533.  81h-85h reserved for other power management event errors
  20534.  86h    APM not present
  20535.  87h-9Fh reserved for other power management event errors
  20536.  A0h-FEh reserved
  20537.  FFh    undefined
  20538. --------p-155301-----------------------------
  20539. INT 15 - Advanced Power Management v1.0+ - CONNECT REAL-MODE INTERFACE
  20540.     AX = 5301h
  20541.     BX = device ID of system BIOS (0000h)
  20542. Return: CF clear if successful
  20543.     CF set on error
  20544.         AH = error code (02h,05h,07h,09h) (see #0399)
  20545. Note:    on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
  20546.       compatibility mode until it is informed that the user supports a
  20547.       newer version of APM (see AX=530Eh)
  20548. SeeAlso: AX=5302h,AX=5303h,AX=5304h
  20549. --------p-155302-----------------------------
  20550. INT 15 R - Advanced Power Management v1.0+ - CONNECT 16-BIT PROTMODE INTERFACE
  20551.     AX = 5302h
  20552.     BX = device ID of system BIOS (0000h)
  20553. Return: CF clear if successful
  20554.         AX = real-mode segment base address of protected-mode 16-bit code
  20555.         segment
  20556.         BX = offset of entry point
  20557.         CX = real-mode segment base address of protected-mode 16-bit data
  20558.         segment
  20559.         ---APM v1.1---
  20560.         SI = APM BIOS code segment length
  20561.         DI = APM BIOS data segment length
  20562.     CF set on error
  20563.         AH = error code (02h,05h,06h,07h,09h) (see #0399)
  20564. Notes:    the caller must initialize two consecutive descriptors with the
  20565.       returned segment base addresses; these descriptors must be valid
  20566.       whenever the protected-mode interface is called, and will have
  20567.       their limits arbitrarily set to 64K.
  20568.     the protected mode interface is invoked by making a far call with the
  20569.       same register values as for INT 15; it must be invoked while CPL=0,
  20570.       the code segment descriptor must have a DPL of 0, the stack must be
  20571.       in a 16-bit segment and have enough room for BIOS use and possible
  20572.       interrupts, and the current I/O permission bit map must allow access
  20573.       to the I/O ports used for power management.
  20574.     functions 00h-03h are not available from protected mode
  20575.     on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
  20576.       compatibility mode until it is informed that the user supports a
  20577.       newer version of APM (see AX=530Eh)
  20578. SeeAlso: AX=5301h,AX=5303h,AX=5304h
  20579. --------p-155303-----------------------------
  20580. INT 15 - Advanced Power Management v1.0+ - CONNECT 32-BIT PROTMODE INTERFACE
  20581.     AX = 5303h
  20582.     BX = device ID of system BIOS (0000h)
  20583. Return: CF clear if successful
  20584.         AX = real-mode segment base address of protected-mode 32-bit code
  20585.         segment
  20586.         EBX = offset of entry point
  20587.         CX = real-mode segment base address of protected-mode 16-bit code
  20588.         segment
  20589.         DX = real-mode segment base address of protected-mode 16-bit data
  20590.         segment
  20591.         ---APM v1.1---
  20592.         SI = APM BIOS code segment length
  20593.         DI = APM BIOS data segment length
  20594.     CF set on error
  20595.         AH = error code (02h,05h,07h,08h,09h) (see #0399)
  20596. Notes:    the caller must initialize three consecutive descriptors with the
  20597.       returned segment base addresses for 32-bit code, 16-bit code, and
  20598.       16-bit data, respectively; these descriptors must be valid whenever
  20599.       the protected-mode interface is called, and will have their limits
  20600.       arbitrarily set to 64K.
  20601.     the protected mode interface is invoked by making a far call to the
  20602.       32-bit code segment with the same register values as for INT 15; it
  20603.       must be invoked while CPL=0, the code segment descriptor must have a
  20604.       DPL of 0, the stack must be in a 32-bit segment and have enough room
  20605.       for BIOS use and possible interrupts, and the current I/O permission
  20606.       bit map must allow access to the I/O ports used for power management.
  20607.     functions 00h-03h are not available from protected mode
  20608.     on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
  20609.       compatibility mode until it is informed that the user supports a
  20610.       newer version of APM (see AX=530Eh)
  20611. SeeAlso: AX=5301h,AX=5302h,AX=5304h
  20612. --------p-155304-----------------------------
  20613. INT 15 - Advanced Power Management v1.0+ - DISCONNECT INTERFACE
  20614.     AX = 5304h
  20615.     BX = device ID of system BIOS (0000h)
  20616. Return: CF clear if successful
  20617.     CF set on error
  20618.         AH = error code (03h,09h) (see #0399)
  20619. SeeAlso: AX=5301h,AX=5302h,AX=5303h
  20620. --------p-155305-----------------------------
  20621. INT 15 - Advanced Power Management v1.0+ - CPU IDLE
  20622.     AX = 5305h
  20623. Return: CF clear if successful (after system leaves idle state)
  20624.     CF set on error
  20625.         AH = error code (03h,0Bh) (see #0399)
  20626. Notes:    call when the system is idle and should be suspended until the next
  20627.       system event or interrupt
  20628.     should not be called from within a hardware interrupt handler to avoid
  20629.       reentrance problems
  20630.     if an interrupt causes the system to resume normal processing, the
  20631.       interrupt may or may not have been handled when the BIOS returns
  20632.       from this call; thus, the caller should allow interrupts on return
  20633.     interrupt handlers may not retain control if the BIOS allows
  20634.       interrupts while in idle mode even if they are able to determine
  20635.       that they were called from idle mode
  20636.     the caller should issue this call continuously in a loop until it needs
  20637.       to perform some processing of its own
  20638. SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
  20639. --------p-155306-----------------------------
  20640. INT 15 - Advanced Power Management v1.0+ - CPU BUSY
  20641.     AX = 5306h
  20642. Return: CF clear if successful
  20643.     CF set on error
  20644.         AH = error code (03h,0Bh) (see #0399)
  20645. Notes:    called to ensure that the system runs at full speed even on systems
  20646.       where the BIOS is unable to recognize increased activity (especially
  20647.       if interrupts are hooked by other programs and not chained to the
  20648.       BIOS)
  20649.     this call may be made even when the system is already running at full
  20650.       speed, but it will create unnecessary overhead
  20651.     should not be called from within a hardware interrupt handler to avoid
  20652.       reentrance problems
  20653. SeeAlso: AX=5305h
  20654. --------p-155307-----------------------------
  20655. INT 15 - Advanced Power Management v1.0+ - SET POWER STATE
  20656.     AX = 5307h
  20657.     BX = device ID (see #0400)
  20658.     CX = system state ID (see #0401)
  20659. Return: CF clear if successful
  20660.     CF set on error
  20661.         AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #0399)
  20662. Note:    should not be called from within a hardware interrupt handler to avoid
  20663.       reentrance problems
  20664. SeeAlso: AX=530Ch
  20665.  
  20666. (Table 0400)
  20667. Values for APM device IDs:
  20668.  0000h    system BIOS
  20669.  0001h    all devices for which the system BIOS manages power
  20670.  01xxh    display (01FFh for all attached display devices)
  20671.  02xxh    secondary storage (02FFh for all attached secondary storage devices)
  20672.  03xxh    parallel ports (03FFh for all attached parallel ports)
  20673.  04xxh    serial ports (04FFh for all attached serial ports)
  20674. ---APM v1.1+ ---
  20675.  05xxh    network adapters (05FFh for all attached network adapters)
  20676.  06xxh    PCMCIA sockets (06FFh for all)
  20677.  0700h-7FFFh reserved
  20678.  80xxh    system battery devices (APM v1.2)
  20679.  8100h-DFFFh reserved
  20680.  Exxxh    OEM-defined power device IDs
  20681.  F000h-FFFFh reserved
  20682.  
  20683. (Table 0401)
  20684. Values for system state ID:
  20685.  0000h    ready (not supported for device ID 0001h)
  20686.  0001h    stand-by
  20687.  0002h    suspend
  20688.  0003h    off (not supported for device ID 0001h)
  20689. ---APM v1.1---
  20690.  0004h    last request processing notification (only for device ID 0001h)
  20691.  0005h    last request rejected (only for device ID 0001h)
  20692.  0006h-001Fh reserved system states
  20693.  0020h-003Fh OEM-defined system states
  20694.  0040h-007Fh OEM-defined device states
  20695.  0080h-FFFFh reserved device states
  20696. --------p-155307CX0001-----------------------
  20697. INT 15 - Advanced Power Management v1.0+ - SYSTEM STAND-BY
  20698.     AX = 5307h
  20699.     CX = 0001h
  20700.     BX = 0001h (device ID for all power-managed devices)
  20701. Return: CF clear
  20702. Notes:    puts the entire system into stand-by mode; normally called in response
  20703.       to a System Stand-by Request notification after any necessary
  20704.       processing, but may also be invoked at the caller's discretion
  20705.     should not be called from within a hardware interrupt handler to avoid
  20706.       reentrance problems
  20707.     the stand-by state is typically exited on an interrupt
  20708. SeeAlso: AX=4280h,AX=5307h/CX=0002h"SUSPEND",AX=530Bh
  20709. --------p-155307CX0002-----------------------
  20710. INT 15 - Advanced Power Management v1.0+ - SUSPEND SYSTEM
  20711.     AX = 5307h
  20712.     CX = 0002h
  20713.     BX = 0001h (device ID for all power-managed devices)
  20714. Return: after system is resumed
  20715.     CF clear
  20716. Notes:    puts the entire system into a low-power suspended state; normally
  20717.       called in response to a Suspend System Request notification after
  20718.       any necessary processing, but may also be invoked at the caller's
  20719.       discretion
  20720.     should not be called from within a hardware interrupt handler to avoid
  20721.       reentrance problems
  20722.     the caller may need to update its date and time values because the
  20723.       system could have been suspended for a long period of time
  20724. SeeAlso: AX=5307h/CX=0001h"STAND-BY",AX=530Bh
  20725. --------p-155308-----------------------------
  20726. INT 15 - Advanced Power Management v1.0+ - ENABLE/DISABLE POWER MANAGEMENT
  20727.     AX = 5308h
  20728.     BX = device ID for all devices power-managed by APM
  20729.         0001h (APM v1.1+)
  20730.         FFFFh (APM v1.0)
  20731.     CX = new state
  20732.         0000h disabled
  20733.         0001h enabled
  20734. Return: CF clear if successful
  20735.     CF set on error
  20736.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0399)
  20737. Notes:    when power management is disabled, the system BIOS will not
  20738.       automatically power down devices, enter stand-by or suspended mode,
  20739.       or perform any power-saving actions in response to AX=5305h calls
  20740.     should not be called from within a hardware interrupt handler to avoid
  20741.       reentrance problems
  20742.     the APM BIOS should never be both disabled and disengaged at the same
  20743.       time
  20744. SeeAlso: AX=5309h,AX=530Dh,AX=530Fh
  20745. --------p-155309-----------------------------
  20746. INT 15 - Advanced Power Management v1.0+ - RESTORE POWER-ON DEFAULTS
  20747.     AX = 5309h
  20748.     BX = device ID for all devices power-managed by APM
  20749.         0001h (APM v1.1)
  20750.         FFFFh (APM v1.0)
  20751. Return: CF clear if successful
  20752.     CF set on error
  20753.         AH = error code (03h,09h,0Bh) (see #0399)
  20754. Note:    should not be called from within a hardware interrupt handler to avoid
  20755.       reentrance problems
  20756. SeeAlso: AX=5308h
  20757. --------p-15530A-----------------------------
  20758. INT 15 - Advanced Power Management v1.0+ - GET POWER STATUS
  20759.     AX = 530Ah
  20760.     BX = device ID
  20761.         0001h all devices power-managed by APM
  20762.         80xxh specific battery unit number XXh (01h-FFh) (APM v1.2)
  20763. Return: CF clear if successful
  20764.         BH = AC line status
  20765.         00h off-line
  20766.         01h on-line
  20767.         02h on backup power (APM v1.1)
  20768.         FFh unknown
  20769.         other reserved
  20770.         BL = battery status (see #0402)
  20771.         CH = battery flag (APM v1.1+) (see #0403)
  20772.         CL = remaining battery life, percentage
  20773.         00h-64h (0-100) percentage of full charge
  20774.         FFh unknown
  20775.         DX = remaining battery life, time (APM v1.1) (see #0404)
  20776.         ---if specific battery unit specified---
  20777.         SI = number of battery units currently installed
  20778.     CF set on error
  20779.         AH = error code (09h,0Ah) (see #0399)
  20780. Notes:    should not be called from within a hardware interrupt handler to avoid
  20781.       reentrance problems
  20782.     supported in real mode (INT 15) and both 16-bit and 32-bit protected
  20783.       mode
  20784.  
  20785. (Table 0402)
  20786. Values for APM v1.0+ battery status:
  20787.  00h    high
  20788.  01h    low
  20789.  02h    critical
  20790.  03h    charging
  20791.  FFh    unknown
  20792.  other    reserved
  20793. SeeAlso: #0403,#0404
  20794.  
  20795. Bitfields for APM v1.1+ battery flag:
  20796. Bit(s)    Description    (Table 0403)
  20797.  0    high
  20798.  1    low
  20799.  2    critical
  20800.  3    charging
  20801.  4    selected battery not present (APM v1.2)
  20802.  5-6    reserved (0)
  20803.  7    no system battery
  20804. Note:    all bits set (FFh) if unknown
  20805. SeeAlso: #0402,#0404
  20806.  
  20807. Bitfields for APM v1.1+ remaining battery life:
  20808. Bit(s)    Description    (Table 0404)
  20809.  15    time units: 0=seconds, 1=minutes
  20810.  14-0    battery life in minutes or seconds
  20811. Note:    all bits set (FFFFh) if unknown
  20812. SeeAlso: #0402,#0403
  20813. --------p-15530B-----------------------------
  20814. INT 15 - Advanced Power Management v1.0+ - GET POWER MANAGEMENT EVENT
  20815.     AX = 530Bh
  20816. Return: CF clear if successful
  20817.         BX = event code (see #0405)
  20818.         CX = event information (APM v1.2) if BX=0003h or BX=0004h
  20819.         bit 0: PCMCIA socket was powered down in suspend state
  20820.     CF set on error
  20821.         AH = error code (03h,0Bh,80h) (see #0399)
  20822. Notes:    although power management events are often asynchronous, notification
  20823.       will not be made until polled via this call to permit software to
  20824.       only receive event notification when it is prepared to process
  20825.       power management events; since these events are not very time-
  20826.       critical, it should be sufficient to poll once or twice per second
  20827.     the critical resume notification is made after the system resumes
  20828.       from an emergency suspension; normally, the system BIOS only notifies
  20829.       its partner that it wishes to suspend and relies on the partner to
  20830.       actually request the suspension, but no notification is made on an
  20831.       emergency suspension
  20832.     should not be called from within a hardware interrupt handler to avoid
  20833.       reentrance problems
  20834. SeeAlso: AX=5307h,AX=5307h/CX=0001h"STAND-BY",AX=5307h/CX=0002h"SUSPEND"
  20835.  
  20836. (Table 0405)
  20837. Values for APM event code:
  20838.  0001h    system stand-by request
  20839.  0002h    system suspend request
  20840.  0003h    normal resume system notification
  20841.  0004h    critical resume system notification
  20842.  0005h    battery low notification
  20843. ---APM v1.1---
  20844.  0006h    power status change notification
  20845.  0007h    update time notification
  20846.  0008h    critical system suspend notification
  20847.  0009h    user system standby request notification
  20848.  000Ah    user system suspend request notification
  20849.  000Bh    system standby resume notification
  20850. ---APM v1.2---
  20851.  000Ch    capabilities change notification (see AX=5310h)
  20852. ------
  20853.  000Dh-00FFh reserved system events
  20854.  01xxh    reserved device events
  20855.  02xxh    OEM-defined APM events
  20856.  0300h-FFFFh reserved
  20857. --------p-15530C-----------------------------
  20858. INT 15 - Advanced Power Management v1.1+ - GET POWER STATE
  20859.     AX = 530Ch
  20860.     BX = device ID (see #0400)
  20861. Return: CF clear if successful
  20862.         CX = system state ID (see #0401)
  20863.     CF set on error
  20864.         AH = error code (01h,09h) (see #0399)
  20865. SeeAlso: AX=5307h
  20866. --------p-15530D-----------------------------
  20867. INT 15 - Advanced Power Management v1.1+ - EN/DISABLE DEVICE POWER MANAGEMENT
  20868.     AX = 530Dh
  20869.     BX = device ID (see #0400)
  20870.     CX = function
  20871.         0000h disable power management
  20872.         0001h enable power management
  20873. Return: CF clear if successful
  20874.     CF set on error
  20875.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0399)
  20876. Desc:    specify whether automatic power management should be active for a
  20877.       given device
  20878. SeeAlso: AX=5308h,AX=530Fh
  20879. --------p-15530E-----------------------------
  20880. INT 15 - Advanced Power Management v1.1+ - DRIVER VERSION
  20881.     AX = 530Eh
  20882.     BX = device ID of system BIOS (0000h)
  20883.     CH = APM driver major version (BCD)
  20884.     CL = APM driver minor version (BCD) (02h for APM v1.2)
  20885. Return: CF clear if successful
  20886.         AH = APM connection major version (BCD)
  20887.         AL = APM connection minor version (BCD)
  20888.     CF set on error
  20889.         AH = error code (03h,09h,0Bh) (see #0399)
  20890. SeeAlso: AX=5300h,AX=5303h
  20891. --------p-15530F-----------------------------
  20892. INT 15 - Advanced Power Management v1.1+ - ENGAGE/DISENGAGE POWER MANAGEMENT
  20893.     AX = 530Fh
  20894.     BX = device ID (see #0400)
  20895.     CX = function
  20896.         0000h disengage power management
  20897.         0001h engage power management
  20898. Return: CF clear if successful
  20899.     CF set on error
  20900.         AH = error code (01h,09h) (see #0399)
  20901. Notes:    unlike AX=5308h, this call does not affect the functioning of the APM
  20902.       BIOS
  20903.     when cooperative power management is disengaged, the APM BIOS performs
  20904.       automatic power management of the system or device
  20905. SeeAlso: AX=5308h,AX=530Dh
  20906. --------p-155310-----------------------------
  20907. INT 15 - Advanced Power Management v1.2 - GET CAPABILITIES
  20908.     AX = 5310h
  20909.     BX = device ID (see #0400)
  20910.         0000h (APM BIOS)
  20911.         other reserved
  20912. Return: CF clear if successful
  20913.         BL = number of battery units supported (00h if no system batteries)
  20914.         CX = capabilities flags (see #0406)
  20915.     CF set on error
  20916.         AH = error code (01h,09h,86h) (see #0399)
  20917. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  20918.       32-bit protected mode interfaces; it does not require that a
  20919.       connection be established prior to use
  20920.     this function will return the capabilities currently in effect, not
  20921.       any new settings which have been made but do not take effect until
  20922.       a system restart
  20923. SeeAlso: AX=5300h,AX=530Fh,AX=5311h,AX=5312h,AX=5313h
  20924.  
  20925. Bitfields for APM v1.2 capabilities flags:
  20926. Bit(s)    Description    (Table 0406)
  20927.  0    can enter global standby state
  20928.  1    can enter global suspend state
  20929.  2    resume timer will wake up system from standby mode
  20930.  3    resume timer will wake up system from suspend mode
  20931.  4    Resume on Ring Indicator will wake up system from standby mode
  20932.  5    Resume on Ring Indicator will wake up system from suspend mode
  20933.  6    PCMCIA Ring Indicator will wake up system from standby mode
  20934.  7    PCMCIA Ring Indicator will wake up system from suspend mode
  20935. --------p-155311-----------------------------
  20936. INT 15 - Advanced Power Management v1.2 - GET/SET/DISABLE RESUME TIMER
  20937.     AX = 5311h
  20938.     BX = device ID (see #0400)
  20939.         0000h (APM BIOS)
  20940.         other reserved
  20941.     CL = function
  20942.         00h disable Resume Timer
  20943.         01h get Resume Timer
  20944.         02h set Resume Timer
  20945.         CH = resume time, seconds (BCD)
  20946.         DL = resume time, minutes (BCD)
  20947.         DH = resume time, hours (BCD)
  20948.         SI = resume date (BCD), high byte = month, low byte = day
  20949.         DI = resume date, year (BCD)
  20950. Return: CF clear if successful
  20951.         ---if getting timer---
  20952.         CH = resume time, seconds (BCD)
  20953.         DL = resume time, minutes (BCD)
  20954.         DH = resume time, hours (BCD)
  20955.         SI = resume date (BCD), high byte = month, low byte = day
  20956.         DI = resume date, year (BCD)
  20957.     CF set on error
  20958.         AH = error code (03h,09h,0Ah,0Bh,0Ch,0Dh,86h) (see #0399)
  20959. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  20960.       32-bit protected mode interfaces
  20961. SeeAlso: AX=5300h,AX=5310h,AX=5312h,AX=5313h
  20962. --------p-155312-----------------------------
  20963. INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE RESUME ON RING
  20964.     AX = 5312h
  20965.     BX = device ID (see #0400)
  20966.         0000h (APM BIOS)
  20967.         other reserved
  20968.     CL = function
  20969.         00h disable Resume on Ring Indicator
  20970.         01h enable Resume on Ring Indicator
  20971.         02h get Resume on Ring Indicator status
  20972. Return: CF clear if successful
  20973.         CX = resume status (0000h disabled, 0001h enabled)
  20974.     CF set on error
  20975.         AH = error code (03h,09h,0Ah,0Bh,0Ch,86h) (see #0399)
  20976. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  20977.       32-bit protected mode interfaces
  20978. SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5313h
  20979. --------p-155313-----------------------------
  20980. INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE TIMER-BASED REQUESTS
  20981.     AX = 5313h
  20982.     BX = device ID (see #0400)
  20983.         0000h (APM BIOS)
  20984.         other reserved
  20985.     CL = function
  20986.         00h disable timer-based requests
  20987.         01h enable timer-based requests
  20988.         02h get timer-based requests status
  20989. Return: CF clear if successful
  20990.         CX = timer-based requests status (0000h disabled, 0001h enabled)
  20991.     CF set on error
  20992.         AH = error code (03h,09h,0Ah,0Bh,86h) (see #0399)
  20993. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  20994.       32-bit protected mode interfaces
  20995. SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5312h
  20996. --------p-155380BH00-------------------------
  20997. INT 15 - APM SL Enhanced v1.0 - GET SUSPEND/GLOBAL STANDBY MODE
  20998.     AX = 5380h
  20999.     BH = 00h
  21000. Return: CF clear if successful
  21001.         AL = 82360SL Auto Power Off Timer High Count (APWR_TMRH)
  21002.         BL = sustdbymode (see #0407)
  21003. SeeAlso: AX=5380h/BH=01h,AX=5380h/BH=02h,AX=5380h/BH=7Fh
  21004.  
  21005. Bitfields for APM SL sustdbymode:
  21006. Bit(s)    Description    (Table 0407)
  21007.  2    ???
  21008.  1    Auto Power Off Timer Enable (APWR_TMR_EN)
  21009.  0    ???
  21010. --------p-155380BH01-------------------------
  21011. INT 15 - APM SL Enhanced v1.0 - SET SUSPEND/GLOBAL STANDBY MODE
  21012.     AX = 5380h
  21013.     BH = 01h
  21014.     BL = sustdbymode (see #0407)
  21015. Return: CF clear if successful
  21016. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  21017. --------p-155380BH02-------------------------
  21018. INT 15 - APM SL Enhanced v1.0 - GET GLOBAL STANDBY TIMER
  21019.     AX = 5380h
  21020.     BH = 02h
  21021. Return: CF clear if successful
  21022.     SI:DI = timer count in seconds (actually 1.024 seconds)
  21023. Desc:    reads the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  21024. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=03h,AX=5380h/BH=04h,AX=5380h/BH=7Fh
  21025. --------p-155380BH03-------------------------
  21026. INT 15 - APM SL Enhanced v1.0 - SET GLOBAL STANDBY TIMER
  21027.     AX = 5380h
  21028.     BH = 03h
  21029.     SI:DI = timer count in seconds (actually 1.024 seconds)
  21030. Return: CF clear if successful
  21031. Desc:    sets the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  21032. Note:    the maximum timer count is 268431 seconds
  21033. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=7Fh
  21034. --------p-155380BH04-------------------------
  21035. INT 15 - APM SL Enhanced v1.0 - GET AUTO POWER OFF TIMER
  21036.     AX = 5380h
  21037.     BH = 04h
  21038. Return: CF clear if successful
  21039.     SI:DI = timer count in seconds (actually 1.024 seconds)
  21040. Desc:    reads the value of 82360SL APWR_TMRH & APWR_TMRL registers
  21041. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=05h,AX=5380h/BH=06h,AX=5380h/BH=7Fh
  21042. --------p-155380BH05-------------------------
  21043. INT 15 - APM SL Enhanced v1.0 - SET AUTO POWER OFF TIMER
  21044.     AX = 5380h
  21045.     BH = 05h
  21046.     SI:DI = timer count in seconds (actually 1.024 seconds)
  21047. Return: CF clear if successful
  21048. Desc:    sets the value of 82360SL APWR_TMRH & APWR_TMRL registers
  21049. Note:    the maximum timer count is 134213 seconds
  21050. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=7Fh
  21051. --------p-155380BH06-------------------------
  21052. INT 15 - APM SL Enhanced v1.0 - GET RESUME CONDITION
  21053.     AX = 5380h
  21054.     BH = 06h
  21055. Return: CF clear if successful
  21056.         BL = resume condition (see #0408)
  21057. Desc:    reads the value of 82360SL RESUME_MASK register
  21058. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=07h,AX=5380h/BH=08h,AX=5380h/BH=7Fh
  21059.  
  21060. Bitfields for APM SL resume condition:
  21061. Bit(s)    Description    (Table 0408)
  21062.  7-2    reserved (0)
  21063.  1    alarm enabled (resume on CMOS alarm)
  21064.  0    ring enabled
  21065. --------p-155380BH07-------------------------
  21066. INT 15 - APM SL Enhanced v1.0 - SET RESUME CONDITION
  21067.     AX = 5380h
  21068.     BH = 07h
  21069.     BL = resume condition (see #0408)
  21070. Return: CF clear if successful
  21071. Desc:    sets the value of 82360SL RESUME_MASK register
  21072. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=7Fh
  21073. --------p-155380BH08-------------------------
  21074. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT TIME
  21075.     AX = 5380h
  21076.     BH = 08h
  21077. Return: CF clear if successful
  21078.         CH = hours
  21079.         CL = minutes
  21080.         SI = seconds
  21081.     CF set on error
  21082.         AH = error code (see #0409)
  21083. Desc:    gets calendar event time from CMOS ram
  21084. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=09h,AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  21085.  
  21086. (Table 0409)
  21087. Values for APM SL error code:
  21088.  02h    no alarm set
  21089.  03h    no battery
  21090. --------p-155380BH09-------------------------
  21091. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT TIME
  21092.     AX = 5380h
  21093.     BH = 09h
  21094.     CH = hours
  21095.     CL = minutes
  21096.     SI = seconds
  21097. Return: CF clear if successful
  21098.     CF set on error
  21099.         AH = error code (see #0409)
  21100. Desc:    sets calendar event time in CMOS ram, enables Alarm resume
  21101. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=7Fh
  21102. --------p-155380BH0A-------------------------
  21103. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT DATE
  21104.     AX = 5380h
  21105.     BH = 0Ah
  21106. Return: CF clear if successful
  21107.         SI = century
  21108.         DI = year
  21109.         CH = month
  21110.         CL = day
  21111.     CF set on error
  21112.         AH = error code (see #0409)
  21113. Desc:    reads calendar event date from Extended CMOS ram
  21114. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=0Bh,AX=5380h/BH=0Ch,AX=5380h/BH=7Fh
  21115. --------p-155380BH0B-------------------------
  21116. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT DATE
  21117.     AX = 5380h
  21118.     BH = 0Bh
  21119.     SI = century
  21120.     DI = year
  21121.     CH = month
  21122.     CL = day
  21123. Return: CF clear if successful
  21124.     CF set on error
  21125.         AH = error code (see #0409)
  21126. Desc:    sets calendar event date in Extended CMOS ram
  21127. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  21128. --------p-155380BH0C-------------------------
  21129. INT 15 - APM SL Enhanced v1.0 - GET CPU SPEED MODE
  21130.     AX = 5380h
  21131.     BH = 0Ch
  21132. Return: CF clear if successful
  21133.     CL = CPU clock divider (1,2,4 or 8)
  21134.     BL = autocpumode ???
  21135. Desc:    reads bits 4-5 of CPUPWRMODE register
  21136. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=0Dh,AX=5380h/BH=7Fh
  21137. --------p-155380BH0D-------------------------
  21138. INT 15 - APM SL Enhanced v1.0 - SET CPU SPEED MODE
  21139.     AX = 5380h
  21140.     BH = 0Dh
  21141.     CL = CPU clock divider (1,2,4 or 8)
  21142.     BL = autocpumode ???
  21143. Return: CF clear if successful
  21144. Desc:    writes bits 4-5 of CPUPWRMODE register
  21145. SeeAlso: AX=5380h/BH=0Ch,AX=5380h/BH=7Eh,AX=5380h/BH=7Fh
  21146. --------p-155380BH7E-------------------------
  21147. INT 15 - APM SL Enhanced v1.0 - SL HW PARAMETER
  21148.     AX = 5380h
  21149.     BH = 7Eh
  21150. Return: AL = ???
  21151.         03h on A-Step 386SL BIOSes
  21152.         12h on later steps
  21153.     BX = Control port (00B0h)
  21154. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  21155. --------p-155380BH7F-------------------------
  21156. INT 15 - Advanced Power Management v1.1 - OEM APM INSTALLATION CHECK
  21157.     AX = 5380h
  21158.     BH = 7Fh
  21159. Return: CF clear if successful
  21160.         BX = OEM identifier
  21161.         all other registers OEM-defined
  21162.         ---Intel SL Enhanced Option BIOS---
  21163.         BX = 534Ch ('SL')
  21164.         CL = 4Fh ('O')
  21165.         AL = version (10h = 1.0)
  21166.         ---HP APM BIOS---
  21167.         BX = 4850h ('HP')
  21168.         CX = version (0001h)
  21169.     CF set on error
  21170.         AH = error code (03h) (see #0399)
  21171. SeeAlso: AX=5380h/BH=00h
  21172. --------p-155380-----------------------------
  21173. INT 15 - Advanced Power Management v1.1 - OEM APM FUNCTIONS
  21174.     AX = 5380h
  21175.     BH <> 7Fh
  21176.     all other registers OEM-defined
  21177. Return: OEM-defined
  21178. SeeAlso: AX=5380h/BH=7Fh
  21179. --------X-1553B0BH00-------------------------
  21180. INT 15 - Intel System Management Bus - RESERVED
  21181.     AX = 53B0h
  21182.     BH = 00h
  21183. Program: the SMBus is a variant of ACCESS.bus being used by Intel and Duracell
  21184.       for the Smart Battery proposal, but designed to be generic enough to
  21185.       handle other devices besides batteries
  21186. --------X-1553B0BH01-------------------------
  21187. INT 15 - Intel System Management Bus - INSTALLATION CHECK
  21188.     AX = 53B0h
  21189.     BH = 01h
  21190.     BL = 72h ('r')
  21191.     CX = 6164h ('ad')
  21192. Return: CF clear if installed
  21193.         AH = SMBus BIOS Interface Specification major version (01h)
  21194.         AL = SMBus BIOS Interface Specification minor version (00h)
  21195.         BL = number of SMBus devices present
  21196.         CX = 6941h ('iA')
  21197.         DX = vendor-specified SMBus hardware code
  21198.         0000h means undefined hardware type
  21199.     CF set if error
  21200.         AH = Error code 0Ah, 86h (see #0410)
  21201. Note:    this function is only supported in INT 15h mode
  21202. SeeAlso: AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=06h
  21203.  
  21204. (Table 0410)
  21205. Values for Intel System Management Bus error codes:
  21206.  00h    SMBus OK
  21207.  01h    SMBus connect failed
  21208.  02h    SMBus already connected (see also #0411)
  21209.  03h    SMBus disconnect failed
  21210.  04h    SMBus not connected
  21211.  05h    SMBus INT 15 interface disabled
  21212.  06h    SMBus device address request out of range
  21213.  07h    SMBus unknown failure
  21214.  08h    SMBus message list empty
  21215.  09h    SMBus message list overflow
  21216.  0Ah    SMBus invalid signature
  21217.  10h    SMBus device address not acknowledged
  21218.  11h    SMBus device error detected
  21219.  12h    SMBus device command access denied
  21220.  13h    SMBus unknown error
  21221.  14h    SMBus transaction pending
  21222.  15h    SMBus no transaction pending
  21223.  16h    SMBus request does not match pending transaction
  21224.  17h    SMBus device access denied
  21225.  18h    SMBus timeout
  21226.  19h    SMBus protocol not supported
  21227.  1Ah    SMBus busy
  21228.  1Bh    SMBus SMI detected
  21229.  80h    SMBus OK (previously unreported SMI occurred)
  21230.  86h    SMBus not supported
  21231.  
  21232. (Table 0411)
  21233. Values for Intel System Management Bus Already Connected sub-error codes:
  21234.  01h    real mode connect already established
  21235.  02h    16-bit PMode connect already established
  21236.  03h    32-bit PMode connect already established
  21237. SeeAlso: #0410
  21238. --------X-1553B0BH02-------------------------
  21239. INT 15 - Intel System Management Bus - REAL MODE CONNECT
  21240.     AX = 53B0h
  21241.     BH = 02h
  21242.     CX = 6941h ('iA')
  21243. Return: CF clear if successful
  21244.         AX = SMBus Real mode code segment
  21245.         BX = offset of entry point into SMBus BIOS Interface
  21246.         CX = SMBus Real mode data segment
  21247.     CF set if error
  21248.         AH = error code (01h,02h,0Ah,86h) (see #0410)
  21249.         AL = sub-error code if error code is 02h (see #0411)
  21250. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  21251.       to the supplied entry point instead of INT 15 (with registers
  21252.       identical to those described here for INT 15)
  21253. Notes:    Support for this function is optional
  21254.     this function is only supported in INT 15 mode when implemented
  21255. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
  21256. --------X-1553B0BH03-------------------------
  21257. INT 15 - Intel System Management Bus - 16-BIT PROTECTED-MODE CONNECT
  21258.     AX = 53B0h
  21259.     BH = 03h
  21260.     CX = 6941h ('iA')
  21261. Return: CF clear if successful
  21262.         AX = SMBus 16-bit code segment (real mode base address)
  21263.         BX = offset of entry point into SMBus BIOS Interface
  21264.         CX = SMBus 16-bit data segment (real mode base address)
  21265.         SI = code segment length in bytes
  21266.         DI = data segment length in bytes
  21267.     CF set if error
  21268.         AH = error code (01h,02h,0Ah,86h) (see #0410)
  21269.         AL = sub-error code if error code is 02h (see #0411)
  21270. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  21271.       to the supplied entry point instead of INT 15 (with registers
  21272.       identical to those described here for INT 15)
  21273. Notes:    before calling the entry point, two descriptors must be initialized
  21274.       in the GDT or LDT.  They must be consecutive and be in the order of
  21275.       code, then data.  At the time    of the call, the descriptors must be
  21276.       valid and have CPL=0.
  21277.     the code descriptor must be ring-0 privilege
  21278.     this function is only supported in INT 15 mode
  21279. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
  21280. --------X-1553B0BH04-------------------------
  21281. INT 15 - Intel System Management Bus - 32-BIT PROTECTED-MODE CONNECT
  21282.     AX = 53B0h
  21283.     BH = 04h
  21284.     CX = 6941h ('iA')
  21285. Return: CF clear if successful
  21286.         AX = SMBus 32-bit code segment (real mode base address)
  21287.         EBX = offset of entry point into SMBus BIOS Interface
  21288.         CX = SMBus 16-bit code segment (real mode base address)
  21289.         DX = SMBus data segment (real mode base address)
  21290.         SI = code segment length in bytes
  21291.         DI = data segment length in bytes
  21292.     CF set if error
  21293.         AH = error code (01h,02h,0Ah,86h) (see #0410)
  21294.         AL = sub-error code if error code is 02h (see #0411)
  21295. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  21296.       to the supplied entry point instead of INT 15 (with registers
  21297.       identical to those described here for INT 15)
  21298. Notes:    before calling the entry point, two descriptors must be initialized in
  21299.       the GDT or LDT.  They must be consecutive and be in the order of
  21300.       32-bit code, 16-bit code, then data.    At the time of the call, the
  21301.       descriptors must be valid and have CPL=0.
  21302.     the code descriptors must be ring-0 privilege
  21303.     this function is supported only in INT 15 mode
  21304. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=05h
  21305. --------X-1553B0BH05-------------------------
  21306. INT 15 - Intel System Management Bus - DISCONNECT
  21307.     AX = 53B0h
  21308.     BH = 05h
  21309.     CX = 6941h ('iA')
  21310. Return: CF clear if successful
  21311.         AH = 00h (SMBus OK)
  21312.     CF set if error
  21313.         AH = error code (03h,04h,05h,0Ah,86h) (see #0410)
  21314. Note:    this function is supported in connected mode (far CALL entry point)
  21315.       only
  21316. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h
  21317. --------X-1553B0BH06-------------------------
  21318. INT 15 - Intel System Management Bus - GET DEVICE ADDRESSES
  21319.     AX = 53B0h
  21320.     BH = 06h
  21321.     BL = position in list to report
  21322.     CH = 6941h ('iA')
  21323. Return: CF clear if successful
  21324.         AH = 00h (SMBus OK)
  21325.         BH = number of SMBus devices
  21326.         BL = SMBus Device Address of device at position BL in list
  21327.         (see #0412)
  21328.     CF set if error
  21329.         AH = error code (06h,0Ah,86h) (see #0410)
  21330. Desc:    retrieves already assigned SMBus device addresses
  21331. Notes:    this function is supported in INT 15h mode only
  21332.     bit 0 of the device address indicates read/write, so a device may
  21333.       be listed at both xxxxxxx0b and xxxxxxx1b
  21334.  
  21335. (Table 0412)
  21336. Values for System Management Bus predefined device addresses:
  21337.  10h    SMBus host
  21338.  12h    Smart Battery charger
  21339.  14h    Smart Battery selector
  21340.  16h    Smart Battery
  21341.  18h    SMBus Alert response
  21342.  50h    ACCESS.bus host
  21343.  58h    LCD contrast controller
  21344.  5Ah    CCFL backlight driver
  21345.  6Eh    ACCESS.bus default address
  21346.  80h-86h PCMCIA socket controllers
  21347.  88h    VGA graphics controller
  21348.  90h-96h unrestricted addresses
  21349.  82h    SMBus device default address
  21350. --------X-1553B0BH07-------------------------
  21351. INT 15 - Intel System Management Bus - RETRIEVE CRITICAL MESSAGES
  21352.     AX = 53B0h
  21353.     BH = 07h
  21354.     CX = 6941h ('iA')
  21355. Return: CF clear if successful
  21356.         AH = 00h (SMBus OK)
  21357.         AL = device address
  21358.         BX = device message
  21359.     CF set if error
  21360.         AH = error code (05h,07h,08h,09h,0Ah,86h) (see #0410)
  21361. Desc:    retrieves oldest queued critical message from an SMBus device to the
  21362.       host
  21363. Notes:    up to five messages are queued; if the queue is full, messages will be
  21364.       lost and error 09h returned
  21365. --------X-1553B0BH08-------------------------
  21366. INT 15 - Intel System Management Bus - RESERVED
  21367.     AX = 53B0h
  21368.     BH = 08h-0Fh
  21369. --------X-1553B0BH10-------------------------
  21370. INT 15 - Intel System Management Bus - REQUEST
  21371.     AX = 53B0h
  21372.     BH = 10h
  21373.     BL = protocol (see #0413)
  21374.     CH = device address
  21375.     CL = device command (see #0414)
  21376.     DH = MSB Data or block length (for BlockWrite)
  21377.     DL = LSB Data or first byte of block (for BlockWrite)
  21378. Return: CF clear if successful
  21379.         AH = 00h or 80h (SMBus OK)
  21380.          (80h indicates a previously unreported SMI took place)
  21381.     CF set if error
  21382.         AH = error code (05h,10h,11h,12h,13h,14h,17h,19h,1Ah,86h)
  21383.           (see #0410)
  21384. Desc:    request access to a device on the SMBus
  21385. SeeAlso: AX=53B0h/BH=11h, AX=53B0h/BH=13h
  21386.  
  21387. (Table 0413)
  21388. Values for Intel System Management Bus protocol codes:
  21389.  00h    Quick Command
  21390.  01h    Send Byte
  21391.  02h    Receive Byte
  21392.  03h    Write Byte
  21393.  04h    Read Byte
  21394.  05h    Write Word
  21395.  06h    Read Word
  21396.  07h    Block Write
  21397.  08h    Block Read
  21398.  09h    Process Call
  21399.  0Ah-FFh reserved
  21400. SeeAlso: #0414
  21401.  
  21402. (Table 0414)
  21403. Values for Intel System Management Bus Smart Battery command codes:
  21404.  Cmd    Protocol(s)    Description
  21405.  00h    Rd/Wr Word    "ManufacturerAccess" implementation-specific
  21406.  01h    Rd/Wr Word    get/set Low Capacity Alarm threshold
  21407.  02h    Rd/Wr Word    get/set Remaining Time Alarm value (in minutes)
  21408.  03h    Rd/Wr Word    get/set battery characteristics (see #0415)
  21409.  04h    Rd/Wr Word    "AtRate" indicate charge/discharge rate
  21410.  05h    Read Word    "AtRateTimeToFull" time to completely charge (in min.)
  21411.  06h    Read Word    "AtRateTimeToEmpty" time to entirely discharge (min.)
  21412.  07h    Read Word    "AtRateOK" boolean: can battery supply another 10sec?
  21413.  08h    Read Word    internal battery temperature (in 0.1 Kelvins)
  21414.  09h    Read Word    current battery voltage in millivolts
  21415.  0Ah    Read Word    current flowing through battery in milliamperes
  21416.             (positive if charging, negative if discharging)
  21417.  0Bh    Read Word    average current over the past minute
  21418.  0Ch    Read Word    expected error margin in capacity computations in %
  21419.  0Dh    Read Word    predicted remaining charge as % of full charge
  21420.  0Eh    Read Word    predicted remaining charge as % of design capacity
  21421.  0Fh    Read Word    predicted remaining charge in mAh or 10mWh
  21422.  10h    Read Word    predicted full charge capacity in mAh or 10mWh
  21423.  11h    Read Word    predicted remaining battery life in minutes
  21424.             FFFFh = not discharging
  21425.  12h    Read Word    rolling average of predicted life over past minute
  21426.  13h    Read Word    rolling average of predicted charge time over past min.
  21427.             FFFFh = not charging
  21428.  14h    Read Word    get battery's desired charging current in mA
  21429.  14h    Write Word    set charging current in mA
  21430.  15h    Read Word    get battery's desired charging current in mV
  21431.  15h    Write Word    set desired charging voltage in mV
  21432.  16h    Read Word    get current battery status (see #0416)
  21433.  17h    Read Word    get number of charge/discharge cycles for battery
  21434.  18h    Read Word    get design capacity in mAh or 10mWh
  21435.  19h    Read Word    get design voltage
  21436.  1Ah    Read Word    get specification information (see #0417)
  21437.  1Bh    Read Word    get manufacture date (see #1351 at INT 21/AX=5700h)
  21438.  1Ch    Read Word    get serial number
  21439.  1Dh-1Fh        reserved
  21440.  20h    Read Block    get manufacturer's name
  21441.  21h    Read Block    get device name
  21442.  22h    Read Block    get device chemistry (see #0418)
  21443.  23h    Read Block    get manufacturer data
  21444.  24h-2Eh        reserved
  21445.  2Fh            manufacturer-specific
  21446.  30h-3Bh        reserved
  21447.  3Ch-3Fh        manufacturer-specific
  21448. Note:    bits 7-6 are reserved for addressing multiple batteries in a future
  21449.       version of the specification
  21450. SeeAlso: #0413
  21451.  
  21452. Bitfields for Smart Battery battery characteristics:
  21453. Bit(s)    Description    (Table 0415)
  21454.  0    battery has internal charge controller (read-only)
  21455.  1    primary/secondary battery support (read-only)
  21456.  6-2    reserved
  21457.  7    conditioning cycle requested
  21458.  8    internal charge controller enabled
  21459.  9    battery operating in primary mode
  21460.  13-10    reserved
  21461.  14    disable broadcast to charger
  21462.  15    report capacity in units of 10mW / 10mWh instead of mA / mAh
  21463. SeeAlso: #0414,#0416
  21464.  
  21465. Bitfields for Smart Battery battery status:
  21466. Bit(s)    Description    (Table 0416)
  21467.  15    overcharged
  21468.  14    terminate-charge alarm
  21469.  13    reserved
  21470.  12    over-temperature alarm
  21471.  11    terminate-discharge alarm
  21472.  10    reserved
  21473.  9    remaining-capacity alarm
  21474.  8    remaining-time alarm
  21475.  7    initialized
  21476.  6    charging
  21477.  5    fully charged
  21478.  4    fully discharged
  21479.  3-0    error codes
  21480.     0000 OK
  21481.     0001 busy
  21482.     0010 reserved command
  21483.     0011 unsupported command
  21484.     0100 access denied (tried to write to read-only value)
  21485.     0101 overflow/underflow
  21486.     0110 bad size
  21487.     0111 unknown error
  21488. SeeAlso: #0414,#0415,#0417
  21489.  
  21490. Bitfields for Smart Battery specification information:
  21491. Bit(s)    Description    (Table 0417)
  21492.  3-0    SmartBattery specification minor revision number
  21493.  7-4    SmartBattery specification version number
  21494.  11-8    voltage scaling (0-3, multiply voltages by 10^scale)
  21495.  15-12    current scaling (0-3, multiply currents by 10^scale)
  21496. SeeAlso: #0414,#0416
  21497.  
  21498. (Table 0418)
  21499. Values for Smart Battery device chemistry (not case-sensitive):
  21500.  "LION"    Lithium ion
  21501.  "NiMH"    Nickel metal hydride
  21502.  "PbAc"    lead-acid
  21503.  "NiCd" Nickel Cadmium
  21504.  "NiZn" Nickel Zinc
  21505.  "RAM"    rechargeable Alkaline Manganese
  21506.  "ZnAr" Zinc-Air
  21507. SeeAlso: #0414
  21508. --------X-1553B0BH11-------------------------
  21509. INT 15 - Intel System Management Bus - REQUEST CONTINUATION
  21510.     AX = 53B0h
  21511.     BH = 11h
  21512.     BL = protocol (see #0413)
  21513.     CH = device address
  21514.     CL = number of valid bytes in DX (1 or 2)
  21515.     DH = MSB Data (CL = 1 or 2)
  21516.     DL = LSB Data (CL = 2)
  21517. Return: CF clear if successful
  21518.         AH = 00h (SMBus OK)
  21519.         CL = SMBus status
  21520.         00h SMBus hardware not ready for more data
  21521.         01h SMBus hardware ready for 2 more data bytes
  21522.     CF set if error
  21523.         AH = error code (05h,11h,13h,15h,16h,18h,1Bh,86h) (see #0410)
  21524. Desc:    continue WriteBlock protocol started with function 10h
  21525. SeeAlso: AX=53B0h/BH=10h, AX=53B0h/BH=13h
  21526. --------X-1553B0BH12-------------------------
  21527. INT 15 - Intel System Management Bus - REQUEST ABORT
  21528.     AX = 53B0h
  21529.     BH = 12h
  21530.     BL = protocol (see #0413)
  21531.     CH = device address
  21532.     CL = device command
  21533. Return: CF clear if successful
  21534.         AH = 00h (SMBus OK)
  21535.     CF set if error
  21536.         AH = error code (05h,13h,15h,16h,86h) (see #0410)
  21537. Desc:    stop the currently pending SMBus request; usually used to terminate
  21538.       a request after an SMI Detected error
  21539. --------X-1553B0BH13-------------------------
  21540. INT 15 - Intel System Management Bus - REQUEST DATA AND STATUS
  21541.     AX = 53B0h
  21542.     BH = 13h
  21543.     BL = protocol (see #0413)
  21544.     CH = device address
  21545.     CL = device command
  21546. Return: CF clear if successful
  21547.         AH = 00h (SMBus OK)
  21548.         CH = status
  21549.         00h no data pending, transaction complete
  21550.         01h no data pending, transaction continues
  21551.         02h data pending
  21552.         CL = number of valid bytes in DX (0-2)
  21553.         DH = MSB data
  21554.         DL = LSB data
  21555.     CF set if error
  21556.         AH = error code (05h,10h,11h,13h,15h,16h,18h,1Bh,86h) (see #0410)
  21557. Desc:    determine when a transaction is complete, gather data returned by read
  21558.       transactions
  21559. Note:    for Block Read protocol (08h), first call returns block    length in DH
  21560.       and the first byte of the block in DL
  21561. ----------1554-------------------------------
  21562. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  21563.     AH = 54h
  21564. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  21565. --------T-155400-----------------------------
  21566. INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
  21567.     AX = 5400h
  21568.     ES:BX -> device information tables
  21569.     DI:DX -> dispatcher entry point
  21570. Note:    called by OmniView to notify programs loaded before OmniView of state
  21571.       changes inside OmniView
  21572. SeeAlso: AX=5407h,INT 2F/AX=DE00h
  21573. --------T-155401-----------------------------
  21574. INT 15 C - Omniview Multitasker - PROCESS CREATION
  21575.     AX = 5401h
  21576.     ES:BX = process handle
  21577. Note:    called by OmniView to notify programs loaded before OmniView of state
  21578.       changes inside OmniView
  21579. SeeAlso: AX=5402h,INT 2F/AX=DE04h
  21580. --------T-155402-----------------------------
  21581. INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
  21582.     AX = 5402h
  21583.     ES:DX = process handle
  21584. Note:    called by OmniView to notify programs loaded before OmniView of state
  21585.       changes inside OmniView
  21586. SeeAlso: AX=5401h,INT 2F/AX=DE05h
  21587. --------T-155403-----------------------------
  21588. INT 15 C - Omniview Multitasker - SAVE
  21589.     AX = 5403h
  21590.     ES:DX = process swapping out
  21591. Note:    called by OmniView to notify programs loaded before OmniView of state
  21592.       changes inside OmniView
  21593. SeeAlso: AX=5404h,INT 2F/AX=DE08h
  21594. --------T-155404-----------------------------
  21595. INT 15 C - Omniview Multitasker - RESTORE
  21596.     AX = 5404h
  21597.     ES:DX = process swapping in
  21598. Note:    called by OmniView to notify programs loaded before OmniView of state
  21599.       changes inside OmniView
  21600. SeeAlso: AX=5403h,INT 2F/AX=DE09h
  21601. --------T-155405-----------------------------
  21602. INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
  21603.     AX = 5405h
  21604.     ES:DX = process swapping in
  21605. Note:    called by OmniView to notify programs loaded before OmniView of state
  21606.       changes inside OmniView
  21607. SeeAlso: AX=5406h
  21608. --------T-155406-----------------------------
  21609. INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
  21610.     AX = 5406h
  21611.     ES:DX = process swapping in
  21612. Note:    called by OmniView to notify programs loaded before OmniView of state
  21613.       changes inside OmniView
  21614. SeeAlso: AX=5405h
  21615. --------T-155407-----------------------------
  21616. INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
  21617.     AX = 5407h
  21618. Note:    called by OmniView to notify programs loaded before OmniView of state
  21619.       changes inside OmniView
  21620. SeeAlso: AX=5400h,INT 2F/AX=DE03h
  21621. --------b-1560------------------------------------
  21622. INT 15 - HUNTER 16 - SET SYSTEM CLOCK SPEED
  21623.     AH = 60h
  21624.     AL = new speed
  21625.         00h normal (8 MHz)
  21626.         01h Slow Mode 1 (4 MHz)
  21627.         02h Slow Mode 2 (2 MHz)
  21628. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  21629.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  21630. SeeAlso: AX=6301h
  21631. --------p-156000-----------------------------
  21632. INT 15 U - HP 100LX/200LX - GET MAIN BATTERY LEVEL
  21633.     AX = 6000h
  21634. Return: AX = battery level
  21635. Note:    multiply the returned value with 1Bh and add 622h to get millivolts
  21636. SeeAlso: AX=6001h,AX=6002h,AX=6003h,AX=6004h
  21637. --------p-156001-----------------------------
  21638. INT 15 U - HP 100LX/200LX - GET BACKUP BATTERY LEVEL
  21639.     AX = 6001h
  21640. Return: AX = battery level
  21641. Note:    multiply the returned value with 1Bh and add 622h to get millivolts
  21642. SeeAlso: AX=6000h,AX=6002h
  21643. --------p-156002-----------------------------
  21644. INT 15 U - HP 100LX/200LX - GET POWER INFO
  21645.     AX = 6002h
  21646. Return: AL = power settings (see #0419)
  21647. SeeAlso: AX=6000h,AX=6003h,AX=6004h
  21648.  
  21649. Bitfields for power settings:
  21650. Bit(s)    Description    (Table 0419)
  21651.  0-1    unused ???
  21652.  2    card battery status low (OK if bit clear)
  21653.  3    battery charging off (disabled if bits 3-5 clear)
  21654.  4    battery charging slow
  21655.  5    battery charging fast
  21656.  6    power adaptor active
  21657.  7    battery type NiCad (alkaline if bit clear)
  21658. --------p-156003-----------------------------
  21659. INT 15 U - HP 100LX/200LX - SET MAIN BATTERY TYPE
  21660.     AX = 6003h
  21661.     BL = battery type
  21662.         00h alkaline
  21663.         01h NiCad
  21664. SeeAlso: AX=6000h,AX=6004h
  21665. --------p-156004-----------------------------
  21666. INT 15 U - HP 100LX/200LX - SET BATTERY CHARGING MODE
  21667.     AX = 6004h
  21668.     BL = charging
  21669.         00h disabled
  21670.         01h enabled
  21671. SeeAlso: AX=6000h,AX=6003h
  21672. --------b-1561------------------------------------
  21673. INT 15 - HUNTER 16 - GET POWER LEVEL
  21674.     AH = 61h
  21675. Return: AH = percentage of full power left (0..100)
  21676. Desc:    determine how much battery power is left
  21677. SeeAlso: AH=62h,AH=66h,AH=73h"HUNTER"
  21678. --------b-1561-------------------------------
  21679. INT 15 U - HP 100LX/200LX - SET ANNOUNCIATORS POSITION
  21680.     AH = 61h
  21681.     AL = position (20h = left, 60h = right)
  21682. Note:    The announciators are the indicator symbols for the Shift and Fn keys
  21683.       in the bottom line
  21684. SeeAlso: AH=62h"HP",INT 16/AH=02h
  21685. --------b-1562------------------------------------
  21686. INT 15 - HUNTER 16 - SET LOW POWER THRESHOLD
  21687.     AH = 62h
  21688.     AL = level (00h 5%, 01h 10%, ... 12h 95%)
  21689.     BX = interval between power low warnings in seconds (1..600)
  21690. Return: AH = Status
  21691. Desc:    set the level (relative to full power) when power-low warnings begin
  21692.       and the interval between the warnings
  21693. SeeAlso: AH=61h,AH=65h,AH=66h
  21694. --------b-1562-------------------------------
  21695. INT 15 U - HP 100LX/200LX - SET DISPLAY CONTRAST
  21696.     AH = 62h
  21697.     BL = contrast (00h-1Fh, 1Fh is the darkest)
  21698. SeeAlso: AH=47h"HP",AH=61h"HP"
  21699. --------b-156300----------------------------------
  21700. INT 15 - HUNTER 16 - GET IDLE TIMEOUT
  21701.     AX = 6300h
  21702. Return: AH = status
  21703.     BX = timeout in seconds (0-3600)
  21704. Desc:    get the idle timeout value, the interval without keyboard or
  21705.        communications activity before the system shuts down
  21706. SeeAlso: AX=6301h
  21707. --------b-156301----------------------------------
  21708. INT 15 - HUNTER 16 - SET IDLE TIMEOUT
  21709.     AX = 6301h
  21710.     BX = timeout in seconds (0-3600)
  21711. Desc:    sets the idle timeout value, the interval without keyboard or
  21712.       communications activity before the system shuts down
  21713. SeeAlso: AX=6300h
  21714. --------b-1564------------------------------------
  21715. INT 15 - HUNTER 16 - CONTROL RESUME MODE
  21716.     AH = 64h
  21717.     AL = new state
  21718.         00h disable Resume mode
  21719.         01h enable Resume mode
  21720. Return: AH = status
  21721. Desc:    turn Resume mode on or off. In Resume mode the system starts in
  21722.       the application that was running when it shut down as if nothing
  21723.       had happened.
  21724. SeeAlso: AH=67h,AH=68h,AH=69h
  21725. --------b-1565------------------------------------
  21726. INT 15 - HUNTER 16 - AUTHORISE CHARGING
  21727.     AH = 65h
  21728.     AL = charging level
  21729.         01h charging not allowed
  21730.         02h charging allowed until power down
  21731.         03h charging allowed until batteries changed or fail.
  21732.         Ask user if charging is still allowed on next poweron
  21733.         04h charging allowed indefinitely
  21734.     BX = 0203h
  21735.     CX = 0405h
  21736.     DX = 0607h
  21737. Return: AH = status
  21738. SeeAlso: AH=66h,AH=68h
  21739. --------b-1566------------------------------------
  21740. INT 15 - HUNTER 16 - SET BATTERY LEVEL
  21741.     AH = 66h
  21742.     AL = level in percent of maximum (0..100)
  21743. Return: AH = status
  21744. SeeAlso: AH=61h,AH=65h
  21745. --------b-1567------------------------------------
  21746. INT 15 - HUNTER 16 - CONTROL STOP MODE
  21747.     AH = 67h
  21748.     AL = mode when waiting for input
  21749.         00h use STOP mode (allows communication)
  21750.         01h use HALT mode (disallows communication)
  21751. Return: AH = status
  21752. Desc:    select the power save mode to use when waiting for input
  21753. SeeAlso: AH=69h
  21754. --------b-1568------------------------------------
  21755. INT 15 - HUNTER 16 - REQUEST POWER DOWN
  21756.     AH = 68h
  21757. Desc:    turns off the Hunter 16 if power down is allowed (see AH=69h)
  21758. SeeAlso: AH=69h
  21759. --------b-1569------------------------------------
  21760. INT 15 - HUNTER 16 - CONTROL POWER DOWN AVAILABILITY
  21761.     AH = 69h
  21762.     AL = mode
  21763.         00h inhibit power down
  21764.         01h allow power down
  21765. Return: AH = status
  21766. SeeAlso: AH=67h,AH=68h,AH=6Ah
  21767. --------b-156A------------------------------------
  21768. INT 15 - HUNTER 16 - CONTROL SLOW MODE
  21769.     AH = 6Ah
  21770.     AL = mode
  21771.         00h inhibit Slow mode
  21772.         01h allow Slow mode
  21773. Return: AH = status
  21774. SeeAlso: AH=69h
  21775. --------b-156B------------------------------------
  21776. INT 15 - HUNTER 16 - GET ROM BIOS VERSION
  21777.     AH = 6Bh
  21778. Return: BH = version number (ASCII)
  21779.     BL = release number (ASCII)
  21780.     CH = major??? release number (ASCII)
  21781.     CL = minor??? release number (ASCII)
  21782. SeeAlso: AH=6Ch
  21783. --------b-156C------------------------------------
  21784. INT 15 - HUNTER 16 - GET SERIAL NUMBER
  21785.     AH = 6Ch
  21786. Return: BL:CX = BCD serial number
  21787. Note:    when shipped, all Hunter 16s have the same Serial Number, but a
  21788.       different number can be stored (see AH=72h)
  21789. SeeAlso: AH=6Bh,AH=72h
  21790. --------b-156D------------------------------------
  21791. INT 15 - HUNTER 16 - GET EVENT DETAIL
  21792.     AH = 6Dh
  21793. Return: AH = 00h if successful
  21794.     CX:BX = event flags bit 0..31 (see #0420)
  21795. Note:    this function allows testing for events
  21796. SeeAlso: AH=6Eh,AH=6Fh
  21797.  
  21798. Bitfields for HUNTER 16 events:
  21799. Bit(s)    Description    (Table 0420)
  21800.  6    RI received
  21801.  5    RTC Alarm
  21802.  4    data received on COM2
  21803.  3    data received on COM1
  21804.  2    error on COM2
  21805.  1    error on COM1
  21806.  0    PWR button pressed
  21807. --------b-156E------------------------------------
  21808. INT 15 - HUNTER 16 - ENABLE/TRAP EVENT
  21809.     AH = 6Eh
  21810.     AL = Software Interrupt
  21811.           00h  do not trap event
  21812.           else trap as software interrupt number AL
  21813.     BH = event number (see AH=6Dh)
  21814.     BL = enable mask
  21815.         00h disable event
  21816.         01h enable event
  21817. Return: AH = 00h if successful
  21818. SeeAlso: AH=6Dh,AH=6Fh
  21819. --------b-156F------------------------------------
  21820. INT 15 - HUNTER 16 - ACKNOWLEDGE EVENT
  21821.     AH = 6Fh
  21822.     AL = event number (see AH=6Dh)
  21823. Return: AH = 00h if successful
  21824. Desc:    Acknowledges the event, so the next similar event can be detected
  21825. SeeAlso: AH=6Dh"HUNTER",AH=6Eh
  21826. --------b-1570------------------------------------
  21827. INT 15 - HUNTER 16 - CONTROL SOUND
  21828.     AH = 70h
  21829.     AL = new state
  21830.         00h disable sound
  21831.         else enable sound
  21832. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  21833.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  21834. --------x-157000-----------------------------
  21835. INT 15 - Tandy 1000SL/TL - READ FROM EEPROM
  21836.     AX = 7000h
  21837.     BL = number of word to read (00h-3Fh)
  21838. Return: CF clear if function supported
  21839.         DX = contents of EEPROM word
  21840. Note:    newer Tandy 1000-series machines use EEPROM instead of CMOS RAM in
  21841.       the clock chip to store system configuration information
  21842. SeeAlso: AX=7001h
  21843. --------x-157001-----------------------------
  21844. INT 15 - Tandy 1000SL/TL - WRITE TO EEPROM
  21845.     AX = 7001h
  21846.     BL = number of word to read (00h-3Fh)
  21847.     DX = new value for EEPROM word
  21848. Return: CF clear if function supported
  21849. Note:    the EEPROMs are normally written only by the system setup program;
  21850.       changing the values can badly mess up a Tandy
  21851. SeeAlso: AX=7000h
  21852. ----------157002-----------------------------
  21853. INT 15 U - Tandy 1000 Model ??? - GET ROM PAGE
  21854.     AX = 7002h
  21855. Return: AL = ROM page mapped at 0E0000h (0-6 (13?))
  21856. Note:    some Tandy machines have DOS and DeskMate in a 512k paged ROM.    The
  21857.       BIOS uses this call to determine what ROM page is mapped in the 64k
  21858.       segment at 0E0000h.
  21859.     the 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
  21860.       0F0000h.  There may be 16 32k ROM pages on other systems.
  21861. SeeAlso: AX=7003h,INT E0"DeskMate"
  21862. ----------157003-----------------------------
  21863. INT 15 U - Tandy 1000 Model ??? - SET ROM PAGE
  21864.     AX = 7003h
  21865.     DL = ROM page to be mapped at 0E0000h (0-6 (13?))
  21866. Return: CF clear if valid ROM page specified
  21867. Note:    Some Tandy machines have DOS and DeskMate in a 512k paged ROM.    The
  21868.       BIOS uses this call to map ROM pages in the 64k segment at 0E0000h.
  21869.     The 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
  21870.       0F0000h.  There may be 16 32k ROM pages on other systems.
  21871. SeeAlso: AX=7002h,INT E0"DeskMate"
  21872. --------b-1571------------------------------------
  21873. INT 15 - HUNTER 16 - SELECT POWER UP KEYS
  21874.     AH = 71h
  21875.     BL = column
  21876.     BH = row
  21877.     AL = column switch (00h disable, 01h enable)
  21878.     CL = row switch (00h disable, 01h enable)
  21879. Return: AH = status
  21880. SeeAlso: AH=7Bh,AH=88h
  21881. --------b-157200----------------------------------
  21882. INT 15 - HUNTER 16 - RESET SERIAL NUMBER
  21883.     AX = 7200h
  21884. Return: AH = 00h if successful
  21885. Desc:    reset the serial number to the default serial number present when the
  21886.       Hunter 16 was shipped
  21887. SeeAlso: AH=6Ch,AH=72h
  21888. --------b-1572------------------------------------
  21889. INT 15 - HUNTER 16 - REDIRECT SERIAL NUMBER
  21890.     AH = 72h
  21891.     AL nonzero
  21892.     DS:BX -> new serial number (6 ASCII digits)
  21893. Return: AH = 00h if successful
  21894. Desc:    install a new serial number
  21895. SeeAlso: AH=6Ch,AX=7200h
  21896. --------b-1573------------------------------------
  21897. INT 15 - HUNTER 16 - GET ORACLE GT POWER LEVEL
  21898.     AH = 73h
  21899.     AL = drive (0: A:, 1: B:)
  21900. Return: AH = status
  21901.         00h successful
  21902.         FFh Oracle GT drive not connected
  21903.     AL = power level in percent of maximum (0..100)
  21904. Desc:    get the power remaining in the Oracle GT batteries
  21905. SeeAlso: AH=61h
  21906. --------b-1574------------------------------------
  21907. INT 15 - HUNTER 16 - SET BACKLIGHT POWER UP STATE
  21908.     AH = 74h
  21909.     AL = new level
  21910.         01h off
  21911.         02h unchanged
  21912.         03h change level
  21913.         BL = desired level (00h-7Fh)
  21914. Return: AH = status
  21915. Desc:    select the backlight level to use when the Hunter is next turned on
  21916. SeeAlso: AH=64h,AH=75h,INT 10/AH=64h,INT 10/AH=78h
  21917. --------b-1575------------------------------------
  21918. INT 15 - HUNTER 16 - SET CONTRAST POWER UP STATE
  21919.     AH = 75h
  21920.     AL = new level
  21921.         01h off
  21922.         02h unchanged
  21923.         03h change level
  21924.         BL = desired level (00h-7Fh)
  21925. Return: AH = status
  21926. Desc:    select the LCD contrast level to use when the Hunter is next turned on
  21927. SeeAlso: AH=63h,AH=74h
  21928. --------b-1576------------------------------------
  21929. INT 15 - HUNTER 16 - CONTROL POWER SAVE
  21930.     AH = 76h
  21931.     BX = power save control (see #0421)
  21932. SeeAlso: AH=74h
  21933.  
  21934. Bitfields for HUNTER 16 power save control:
  21935. Bit(s)    Description    (Table 0421)
  21936.  0    power save enabled
  21937.  1    inhibit power save when waiting for COM1 data
  21938.  2    inhibit power save when waiting for COM2 data
  21939.  3    inhibit power save when waiting for data from barcode wand
  21940.  4    inhibit power up on timer tick
  21941. --------b-1579------------------------------------
  21942. INT 15 - HUNTER 16 - REDIRECT LPT1
  21943.     AH = 79h
  21944.     AL = port to which to redirect (00h COM1, 01h COM2)
  21945. --------b-157A------------------------------------
  21946. INT 15 - HUNTER 16 - INVOKE HOT KEY
  21947.     AH = 7Ah
  21948. Desc:    this function has the same effect as pressing the HOT key
  21949. SeeAlso: AH=7Bh
  21950. --------b-157B------------------------------------
  21951. INT 15 - HUNTER 16 - CONTROL HOT KEY
  21952.     AH = 7Bh
  21953.     AL = 00h prevent HOT key
  21954.         else allow HOT key
  21955. Desc:    Allow or prevent the HOT key function which is used to examine and
  21956.       change the Hunter setup
  21957. SeeAlso: AH=71h,AH=7Ah,AH=7Ch
  21958. --------b-157C------------------------------------
  21959. INT 15 - HUNTER 16 - CONTROL HOT KEY POWER OPTION
  21960.     AH = 7Ch
  21961.     AL = 00h prevent HOT key power option
  21962.         else allow HOT key power option
  21963. Desc:    allow or prevent changing the power options
  21964. SeeAlso: AH=7Bh,AH=7Dh
  21965. --------b-157D------------------------------------
  21966. INT 15 - HUNTER 16 - OVERRIDE LOW POWER TURN OFF
  21967.     AH = 7Dh
  21968.     AL = 00h turn off after 10 warnings
  21969.         else never turn off
  21970. Desc:    specify whether the Hunter 16 turns off after 10 low power warnings
  21971. SeeAlso: AH=7Ch
  21972. --------b-157E------------------------------------
  21973. INT 15 - HUNTER 16 - CONTROL BATTERY CHANGE FACILITIES (APM)
  21974.     AH = 7Eh
  21975.     AL = 00h do not prompt
  21976.         else prompt
  21977. Desc:    select whether the user is prompted for the battery state if the
  21978.       battery cap has been off when the system is turned on
  21979. SeeAlso: AH=7Fh
  21980. --------b-157F------------------------------------
  21981. INT 15 - HUNTER 16 - SET BATTERY TYPE (APM)
  21982.     AH = 7Fh
  21983.     AL = battery type
  21984.         00h     non-rechargeable
  21985.         else rechargeable
  21986. SeeAlso: AH=7Eh
  21987. --------B-1580-------------------------------
  21988. INT 15 C - OS HOOK - DEVICE OPEN (AT,XT286,PS)
  21989.     AH = 80h
  21990.     BX = device ID
  21991.     CX = process ID
  21992.     CF clear
  21993. Return: CF clear if successful
  21994.         AH = 00h
  21995.     CF set on error
  21996.         AH = status (see #0422)
  21997. Note:    this function should be hooked by a multitasker which wishes to keep
  21998.       track of device ownership; the default BIOS handler merely returns
  21999.       successfully
  22000. SeeAlso: AH=81h,AH=82h
  22001.  
  22002. (Table 0422)
  22003. Values for status:
  22004.  80h    invalid command (PC,PCjr)
  22005.  86h    function not supported (XT)
  22006. --------b-1580------------------------------------
  22007. INT 15 - HUNTER 16 - GET/SET BATTERY CAPACITY (APM)
  22008.     AH = 80h
  22009.     AL = function
  22010.         00h get
  22011.         Return: AL = capacity (500mA + AL * 50mA, max 40 = 2500mA)
  22012.         else set
  22013.         BL = battery capacity (same as AL above)
  22014. SeeAlso: AH=61h"HUNTER",AH=81h"HUNTER"
  22015. --------B-1581-------------------------------
  22016. INT 15 C - OS HOOK - DEVICE CLOSE
  22017.     AH = 81h
  22018.     BX = device ID
  22019.     CX = process ID
  22020.     CF clear
  22021. Return: CF clear if successful
  22022.         AH = 00h
  22023.     CF set on error
  22024.         AH = status (see #0422)
  22025. Note:    this function should be hooked by a multitasker which wishes to keep
  22026.       track of device ownership; the default BIOS handler merely returns
  22027.       successfully
  22028. SeeAlso: AH=80h,AH=82h
  22029. --------b-1581------------------------------------
  22030. INT 15 - HUNTER 16 - CONTROL POWER OUTPUT
  22031.     AH = 81h
  22032.     AL = new state of power output (00h off, nonzero on)
  22033. Desc:    turn the +5V low power output on or off
  22034. SeeAlso: AH=80h"HUNTER"
  22035. --------B-1582-------------------------------
  22036. INT 15 C - OS HOOK - PROGRAM TERMINATION
  22037.     AH = 82h
  22038.     BX = process ID
  22039.     CF clear
  22040. Return: CF clear if successful
  22041.         AH = 00h
  22042.     CF set on error
  22043.         AH = status (see #0422)
  22044. Notes:    closes all devices opened by the given process ID with function 80h
  22045.     this function should be hooked by a multitasker which wishes to keep
  22046.       track of device ownership; the default BIOS handler merely returns
  22047.       successfully
  22048. SeeAlso: AH=80h,AH=81h
  22049. --------b-1582------------------------------------
  22050. INT 15 - HUNTER 16 - SOUND OUTPUT
  22051.     AH = 82h
  22052.     DX = length (duration in seconds = DX * 666670 / frequency)
  22053.     BX = pitch (see #0423)
  22054. Desc:    Sound the tone specified in BX for the duration in DX
  22055. SeeAlso: AX=1019h
  22056.  
  22057. (Table 0423)
  22058. Values for HUNTER 16 sound pitch:
  22059. BX(dec)     Note    Frequency    BX(dec)     Note    Frequency
  22060.   425    G    1568.000     1515    A     440.000
  22061.   451    F#    1479.503     1605    G#     415.307
  22062.   477    F    1396.900     1701    G     392.000
  22063.   506    E    1318.500     1802    F#     369.998
  22064.   536    D#    1244.523     1909    F     349.230
  22065.   568    D    1174.700     2022    E     329.630
  22066.   601    C#    1108.749     2143    D#     311.127
  22067.   637    C    1046.500     2270    D     293.660
  22068.   675    B     958.770     2405    C#     277.183
  22069.   715    A#     932.329     2548    MID C     261.630
  22070.   758    A     880.000     2700    B     246.940
  22071.   803    G#     830.609     2860    A#     233.081
  22072.   850    G     783.990     3030    A     220.000
  22073.   901    F#     739.990     3210    G#     207.654
  22074.   954    F     698.460     3401    G     196.000
  22075.  1011    E     659.260     3604    F#     184.996
  22076.  1071    D#     622.257     3818    F     174.610
  22077.  1135    D     587.330     4045    E     164.810
  22078.  1203    C#     554.365     4286    D#     155.560
  22079.  1274    C     523.250     4540    D     146.830
  22080.  1350    B     493.880     4668    C#     142.827
  22081.  1430    A#     466.162     4803    C     138.810
  22082. --------B-1583-------------------------------
  22083. INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+)
  22084.     AH = 83h
  22085.     AL = subfunction
  22086.         00h set interval
  22087.         CX:DX = microseconds to delay
  22088.         ES:BX -> byte whose high bit is to be set at end of interval
  22089.         01h cancel wait interval
  22090. Return: CF set on error or function already busy
  22091.         AH = status
  22092.         80h invalid command (PC,PCjr)
  22093.         86h function not supported (XT and later)
  22094.     CF clear if successful
  22095. Notes:    the resolution of the wait period is 977 microseconds on many systems
  22096.       because many BIOSes use the 1/1024 second fast interrupt from the AT
  22097.       real-time clock chip which is available on INT 70
  22098.     IBM AT 1/10/84 BIOS ignores AL and always performs subfunction 00h
  22099. SeeAlso: AH=41h,AH=86h,INT 70,MEM 0040h:0098h,MEM 0040h:009Ch
  22100. --------b-1583------------------------------------
  22101. INT 15 - HUNTER 16 - CONTROL SCREEN SYNCHRONISATION
  22102.     AH = 83h
  22103.     AL = state of LCD window (00h disabled, nonzero enabled)
  22104. Desc:    Enable/disable the facility where the displayed window tracks the
  22105.       cursor output to keep the focus visible
  22106. --------B-1584-------------------------------
  22107. INT 15 - BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS)
  22108.     AH = 84h
  22109.     DX = subfunction
  22110.         0000h read joystick switches
  22111.         Return: AL bits 7-4 = switch settings
  22112.         0001h read positions of joysticks
  22113.         Return: AX = X position of joystick A
  22114.             BX = Y position of joystick A
  22115.             CX = X position of joystick B
  22116.             DX = Y position of joystick B
  22117. Return: CF set on error
  22118.         AH = status (see #0422)
  22119.     CF clear if successful
  22120. Notes:    if no game port is installed, subfunction 0000h returns AL=00h (all
  22121.       switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h
  22122.     a 250kOhm joystick typically returns 0000h-01A0h
  22123. SeeAlso: AH=84h"V20-XT-BIOS"
  22124. --------b-1584-------------------------------
  22125. INT 15 - V20-XT-BIOS - JOYSTICK SUPPORT
  22126.     AH = 84h
  22127.     DX = subfunction
  22128.         0000h read joystick switches
  22129.         Return: AL bits 7-4 = switch settings
  22130.         other: read positions of joysticks as indicated by bits 0-3
  22131.         Return: AX = X position of joystick A (if DX bit 0 set)
  22132.             BX = Y position of joystick A (if DX bit 1 set)
  22133.             CX = X position of joystick B (if DX bit 2 set)
  22134.             DX = Y position of joystick B (if DX bit 3 set)
  22135. Return: CF set on error
  22136.         AH = status (see #0422)
  22137.     CF clear if successful
  22138. Program: V20-XT-BIOS is a ROM BIOS replacement with extensions by Peter
  22139.        Koehlmann / c't magazine
  22140. SeeAlso: AH=84h"PS",INT 10/AH=0Eh/CX=ABCDh
  22141. --------b-158400----------------------------------
  22142. INT 15 - HUNTER 16 - GET DISKETTE PORT
  22143.     AX = 8400h
  22144.     BH = Drive (0: A:, 1: B:)
  22145. Return: AL = Port (0: COM1, >0: COM2)
  22146. Desc:    return the COM port used for the floppy drive
  22147. SeeAlso: AX=8401h
  22148. --------b-158401----------------------------------
  22149. INT 15 - HUNTER 16 - SET DISKETTE PORT
  22150.     AX = 8401h
  22151.     BH = Drive (0: A:, 1: B:)
  22152.     BL = Port (0: COM1, >0: COM2)
  22153. Desc:    set the COM port used for the floppy drive
  22154. SeeAlso: AX=8400h
  22155. --------B-1585-------------------------------
  22156. INT 15 C - OS HOOK - SysReq KEY ACTIVITY (AT,PS)
  22157.     AH = 85h
  22158.     AL = SysReq key action (00h pressed, 01h released)
  22159.     CF clear
  22160. Return: CF clear if successful
  22161.         AH = 00h
  22162.     CF set on error
  22163.         AH = status (see #0422)
  22164. Notes:    called by keyboard decode routine
  22165.     the default handler simply returns successfully; programs which wish
  22166.       to monitor the SysReq key must hook this call
  22167.     the SysReq key is often labeled SysRq
  22168. SeeAlso: INT 09
  22169. --------b-158500----------------------------------
  22170. INT 15 - HUNTER 16 - RESTORE POWER MENU (APM)
  22171.     AX = 8500h
  22172. Desc:    restore the standard power menu
  22173. SeeAlso: AX=8501h"HUNTER"
  22174. --------b-158501----------------------------------
  22175. INT 15 - HUNTER 16 - SET POWER MENU (APM)
  22176.     AX = 8501h
  22177.     BL = user software interrupt number
  22178. Desc:    install an alternate power menu routine
  22179. SeeAlso: AX=8500h"HUNTER"
  22180. --------B-1586-------------------------------
  22181. INT 15 - BIOS - WAIT (AT,PS)
  22182.     AH = 86h
  22183.     CX:DX = interval in microseconds
  22184. Return: CF clear if successful (wait interval elapsed)
  22185.     CF set on error or AH=83h wait already in progress
  22186.         AH = status (see #0422)
  22187. Note:    the resolution of the wait period is 977 microseconds on many systems
  22188.       because many BIOSes use the 1/1024 second fast interrupt from the AT
  22189.       real-time clock chip which is available on INT 70; because newer
  22190.       BIOSes may have much more precise timers available, it is not
  22191.       possible to use this function accurately for very short delays unless
  22192.       the precise behavior of the BIOS is known (or found through testing)
  22193. SeeAlso: AH=41h,AH=83h,INT 1A/AX=FF01h,INT 70
  22194. --------b-1586------------------------------------
  22195. INT 15 - HUNTER 16 - GET/SET SCREEN ATTRIBUTE TABLE
  22196.     AH = 86h
  22197.     AL = function (00h get, nonzero set)
  22198.     BX = 1234h
  22199.     DS:SI -> 256-byte Attribute buffer
  22200. Note:    In text modes each character has its attribute byte XOR'd with the
  22201.       corresponding byte in the attribute table.  If the attribute is 15,
  22202.       15 is XOR'd with Table[15]
  22203. --------B-1587-------------------------------
  22204. INT 15 - SYSTEM - COPY EXTENDED MEMORY
  22205.     AH = 87h
  22206.     CX = number of words to copy (max 8000h)
  22207.     ES:SI -> global descriptor table (see #0425)
  22208. Return: CF set on error
  22209.     CF clear if successful
  22210.     AH = status (see #0424)
  22211. Notes:    copy is done in protected mode with interrupts disabled by the default
  22212.       BIOS handler; many 386 memory managers perform the copy with
  22213.       interrupts enabled
  22214.     this function is incompatible with the OS/2 compatibility box
  22215. SeeAlso: AH=88h,AH=89h,INT 1F/AH=90h
  22216.  
  22217. (Table 0424)
  22218. Values for extended-memory copy status:
  22219.  00h    source copied into destination
  22220.  01h    parity error
  22221.  02h    interrupt error
  22222.  03h    address line 20 gating failed
  22223.  80h    invalid command (PC,PCjr)
  22224.  86h    unsupported function (XT,PS30)
  22225.  
  22226. Format of global descriptor table:
  22227. Offset    Size    Description    (Table 0425)
  22228.  00h 16 BYTEs    zeros (used by BIOS)
  22229.  10h    WORD    source segment length in bytes (2*CX-1 or greater)
  22230.  12h  3 BYTEs    24-bit linear source address, low byte first
  22231.  15h    BYTE    source segment access rights (93h)
  22232.  16h    WORD    zero
  22233.  18h    WORD    destination segment length in bytes (2*CX-1 or greater)
  22234.  1Ah  3 BYTEs    24-bit linear destination address, low byte first
  22235.  1Dh    BYTE    destination segment access rights (93h)
  22236.  1Eh 18 BYTEs    zeros (used by BIOS to build CS and SS descriptors)
  22237. --------b-1587------------------------------------
  22238. INT 15 - HUNTER 16 - SET INT 72h VECTOR
  22239.     AH = 87h
  22240.     DS:DX = new service routine
  22241. Desc:    set the INT 72h vector which is called in 2 cases:
  22242.       - when the machine is about to turn off or reboot, INT 72h is called
  22243.         with AH=0
  22244.       - when the machine is powering up INT 72h is called with AH=01h
  22245. Note:    the actual INT 72h vector must also be changed with INT 21/AH=25h
  22246. --------B-1588-------------------------------
  22247. INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+)
  22248.     AH = 88h
  22249. Return: CF clear if successful
  22250.         AX = number of contiguous KB starting at absolute address 100000h
  22251.     CF set on error
  22252.         AH = status
  22253.         80h invalid command (PC,PCjr)
  22254.         86h unsupported function (XT,PS30)
  22255. Notes:    TSRs which wish to allocate extended memory to themselves often hook
  22256.       this call, and return a reduced memory size.    They are then free to
  22257.       use the memory between the new and old sizes at will.
  22258.     the standard BIOS only returns memory between 1MB and 16MB; use AH=C7h
  22259.       for memory beyond 16MB
  22260.     not all BIOSes correctly return the carry flag, making this call
  22261.       unreliable unless one first checks whether it is supported through
  22262.       a mechanism other than calling the function and testing CF
  22263. SeeAlso: AH=87h,AH=8Ah"Phoenix",AH=C7h,AX=DA88h,AX=E801h,AX=E820h
  22264. --------b-1588------------------------------------
  22265. INT 15 - HUNTER 16 - GET POWER UP KEYS
  22266.     AH = 88h
  22267. Return: AH = 00h
  22268.     BX = column
  22269.     CL = row
  22270. SeeAlso: AH=71h
  22271. --------B-1589-------------------------------
  22272. INT 15 - SYSTEM - SWITCH TO PROTECTED MODE
  22273.     AH = 89h
  22274.     BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
  22275.     BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
  22276.     ES:SI -> GDT for protected mode (see #0426)
  22277. Return: CF set on error
  22278.        AH = FFh  error enabling address line 20
  22279.     CF clear if successful
  22280.        AH = 00h
  22281.        in protected mode at specified address
  22282.        BP may be destroyed; all segment registers change
  22283. Notes:    BL and BH must be multiples of 8
  22284.     the protected-mode CS must reference the same memory as the CS this
  22285.       function is called from because execution continues with the address
  22286.       following the interrupt call
  22287. SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch
  22288.  
  22289. Format of BIOS switch-to-protected-mode Global Descriptor Table:
  22290. Offset    Size    Description    (Table 0426)
  22291.  00h  8 BYTEs    null descriptor (initialize to zeros)
  22292.  08h  8 BYTEs    GDT descriptor (see #0427)
  22293.  10h  8 BYTEs    IDT descriptor
  22294.  18h  8 BYTEs    DS descriptor
  22295.  20h  8 BYTEs    ES
  22296.  28h  8 BYTEs    SS
  22297.  30h  8 BYTEs    CS
  22298.  38h  8 BYTEs    uninitialized, used to build descriptor for BIOS CS
  22299.  
  22300. Format of segment descriptor table entry:
  22301. Offset    Size    Description    (Table 0427)
  22302.  00h    WORD    segment limit, low word
  22303.  02h  3 BYTEs    segment base address, low 24 bits
  22304.  05h    BYTE    access mode (see #0428)
  22305.  06h    BYTE    386+ extended access mode (see #0429)
  22306.  07h    BYTE    386+ segment base address, high 8 bits
  22307. SeeAlso: #0426,INT 2C/AX=0002h,INT 31/AX=0009h
  22308.  
  22309. Bitfields for segment descriptor table access mode field:
  22310. Bit(s)    Description    (Table 0428)
  22311.  3-0    segment type
  22312.  4    descriptor type (1 = application, 0 = system)
  22313.  6-5    descriptor privilege level
  22314.  7    segment is present in RAM
  22315. SeeAlso: #0427,#0429
  22316.  
  22317. Bitfields for 386+ segment descriptor table extended access mode field:
  22318. Bit(s)    Description    (Table 0429)
  22319.  3-0    high 4 bits of segment limit
  22320.  4    available
  22321.  5    reserved (0)
  22322.  6    default operation size (1 = 32 bits, 0 = 16 bits)
  22323.  7    granularity (1 = 4K, 0 = byte)
  22324. SeeAlso: #0427,#0428,#2245
  22325. --------b-158900----------------------------------
  22326. INT 15 - HUNTER 16 - GET POWER MODE
  22327.     AX = 8900h
  22328. Return: AH = 00h
  22329.     BL = current power mode
  22330.         00h Standard Power Mode (SPM)
  22331.         01h Advanced Power Mode (APM)
  22332. SeeAlso: AX=8901h
  22333. --------b-158901----------------------------------
  22334. INT 15 - HUNTER 16 - SET POWER MODE
  22335.     AX = 8901h
  22336.     BL = new mode
  22337.         00h Standard Power Mode (SPM)
  22338.         01h Advanced Power Mode (APM)
  22339. Return: AH = 00h
  22340. SeeAlso: AX=8900h
  22341. --------b-158A------------------------------------
  22342. INT 15 - HUNTER 16 - CONTROL POWER INPUT (SPM)
  22343.     AH = 8Ah
  22344.     AL = new state of Power Input (00h disabled, nonzero enabled)
  22345.     SI = 1234h
  22346.     DI = 5678h
  22347. Return: AH = status
  22348.         00h success
  22349.         FFh failure
  22350. Desc:    Enable or disable Power Input. When Power Input is disabled the AC
  22351.       adapter will neither charge the batteries nor supply power to the
  22352.       Hunter 16. Disable Power Input if using Alkaline batteries.
  22353. --------b-158A-------------------------------
  22354. INT 15 - Phoenix BIOS v4.0 - GET BIG MEMORY SIZE
  22355.     AH = 8Ah
  22356. Return: DX:AX = extended memory size in K
  22357. SeeAlso: AH=88h,AX=E801h,AX=E820h
  22358. --------b-158B------------------------------------
  22359. INT 15 - HUNTER 16 - GET/SET CHARGER TEMPERATURE OVERRIDE
  22360.     AH = 8Bh
  22361.     AL = function
  22362.         00h get
  22363.         Return:    BH = Maximum charging temperature
  22364.                 Temp = -20 + (n * 0.63) degrees Centigrade
  22365.             BL = Minimum charging temperature
  22366.         else set
  22367.         BH = maximum charging temperature (as above)
  22368.         BL = minimum charging temperature (as above)
  22369. Return: AH = status
  22370.         00h success
  22371.         FFh failure
  22372. Desc:    get/set the temperature interval within which the charger should
  22373.       operate
  22374. --------b-158C------------------------------------
  22375. INT 15 - HUNTER 16 - GET/SET POWER SAVE ENTRY FLAG
  22376.     AH = 8Ch
  22377.     AL = function
  22378.         00h get
  22379.         Return: BX = which operations disable power save (see #0430)
  22380.         else set
  22381.         BX = which operations should disable power save (see #0430)
  22382. SeeAlso: AH=8Dh
  22383.  
  22384. Bitfields for HUNTER 16 operations disabling power save:
  22385. Bit(s)    Description    (Table 0430)
  22386.  0    INT 10h prevents power save
  22387.  1    INT 13h prevents power save
  22388.  2    INT 14h prevents power save
  22389.  3    INT 15h prevents power save
  22390.  4    INT 1Ah prevents power save
  22391.  5    INT 21h prevents power save
  22392.  6    direct write to video RAM prevents power save
  22393.  7    access to 8250 UART prevents power save
  22394.  8    access to 8253 (Sound) prevents power save
  22395. --------b-158D------------------------------------
  22396. INT 15 - HUNTER 16 - GET/SET BOOST CHARGE (SPM)
  22397.     AH = 8Dh
  22398.     AL = function
  22399.         00h get
  22400.         Return: AL = Fast Charge state (00h prevented, else allowed)
  22401.         nonzero set
  22402.         BH = Fast Charge state (00h prevent, nonzero allow)
  22403. Return: AH = status
  22404.         00h success
  22405.         FFh failure
  22406. Desc:    control whether Fast Charging (200ma rather than 70ma) is allowed
  22407. SeeAlso: AH=8Ch
  22408. --------B-1590-------------------------------
  22409. INT 15 - OS HOOK - DEVICE BUSY (AT,PS)
  22410.     AH = 90h
  22411.     AL = device type (see #0431)
  22412.     ES:BX -> request block for type codes 80h through BFh
  22413.     CF clear
  22414. Return: CF set if wait time satisfied
  22415.     CF clear if driver must perform wait
  22416.         AH = 00h
  22417. Notes:    type codes are allocated as follows:
  22418.       00-7F non-reentrant devices; OS must arbitrate access
  22419.       80-BF reentrant devices; ES:BX points to a unique control block
  22420.       C0-FF wait-only calls, no complementary INT 15/AH=91h call
  22421.     floppy and hard disk BIOS code uses this call to implement a timeout;
  22422.       for device types 00h and 01h, a return of CF set means that the
  22423.       timeout expired before the disk responded.
  22424.     this function should be hooked by a multitasker to allow other tasks
  22425.       to execute while the BIOS is waiting for I/O completion; the default
  22426.       handler merely returns with AH=00h and CF clear
  22427. SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h
  22428.  
  22429. (Table 0431)
  22430. Values for device type:
  22431.  00h    disk
  22432.  01h    diskette
  22433.  02h    keyboard
  22434.  03h    PS/2 pointing device
  22435.  21h    waiting for keyboard input (Phoenix BIOS)
  22436.  80h    network
  22437.  FBh    digital sound (Tandy)
  22438.  FCh    disk reset (PS)
  22439.  FDh    diskette motor start
  22440.  FEh    printer
  22441. --------B-1591-------------------------------
  22442. INT 15 - OS HOOK - DEVICE POST (AT,PS)
  22443.     AH = 91h
  22444.     AL = device type (see #0431)
  22445.     ES:BX -> request block for type codes 80h through BFh
  22446.     CF clear
  22447. Return: AH = 00h
  22448. Note:    this function should be hooked by a multitasker to allow other tasks
  22449.       to execute while the BIOS is waiting for I/O completion; the default
  22450.       handler merely returns with AH=00h and CF clear
  22451. SeeAlso: AH=90h
  22452. --------B-1592-------------------------------
  22453. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  22454.     AH = 92h
  22455. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  22456. --------B-15A0-------------------------------
  22457. INT 15 - IBM SurePath BIOS - ACCESS LOADABLE-ABIOS SIGNATURE
  22458.     AH = A0h
  22459.     AL = function
  22460.         00h get loadable-ABIOS signature
  22461.         Return: BL = signature value
  22462.                 00h loadable-ABIOS prompting not required
  22463.                 A1h loadable-ABIOS prompting is required
  22464.         01h write loadable-ABIOS signature
  22465.         BL = new signature value
  22466.             00h loadable-ABIOS prompting not required
  22467.             A1h loadable-ABIOS prompting is required
  22468. Return: CF clear if successful
  22469.     CF set on error
  22470.     AH = status
  22471.         00h successful
  22472.         01h invalid subfunction
  22473.         02h unable to read/write signature
  22474.         86h function not supported
  22475. Note:    IBM classifies this function as optional
  22476. SeeAlso: AH=08h"IBM"
  22477. --------x-15A100-----------------------------
  22478. INT 15 U - AMI PCI BIOS - SET ??? FLAG
  22479.     AX = A100h
  22480. Return: AX = 0000h
  22481.     CF clear
  22482.     BX,CX,DI may be destroyed
  22483. Desc:    sets bit 7 of CMOS RAM location 37h and updates the CMOS checksum in
  22484.       locations 3Eh and 3Fh
  22485. Notes:    in the examined version of the BIOS, nonzero values in AL cause it to
  22486.       drop through to checking the next possible value of AH, i.e. only
  22487.       subfunction 00h is supported
  22488.     also supported by Dell XPS P90 and IBM PS/PV 6384, which also use
  22489.       AMI BIOSes
  22490. --------B-15AB-------------------------------
  22491. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  22492.     AH = ABh
  22493. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  22494. ----------15B001CX5354-----------------------
  22495. INT 15 - Stac ??? - INSTALLATION CHECK
  22496.     AX = B001h
  22497.     CX = 5354h ('ST')
  22498.     DX = 4143h ('AC')
  22499. Return: AX = 4F4Bh ('OK') if installed
  22500. Note:    this function is called by Novell DOS 7 NWCACHE v1.01
  22501. --------n-15BA10-----------------------------
  22502. INT 15 - HP OmniShare - Pen Driver - REPORT PEN CONTROL AREA EVENT
  22503.     AX = BA10h
  22504.     BL = event
  22505.        00h the pen left control areas
  22506.        01h the pen entered the Brightness- area
  22507.        02h the pen entered the Brightness+ area
  22508.        03h the pen entered the Contrast- area
  22509.        04h the pen entered the Contrast+ area
  22510. Return: CF clear if successfully processed
  22511.     CF set on error (function not supported, ie. not an OmniShare BIOS)
  22512. Note:    The pen driver is responsible for detecting when the pen enters and
  22513.       leaves control areas of the OmniShare tablet, and notifying the BIOS.
  22514.     The BIOS manages the events, including the autorepetition, and sets
  22515.       the status LEDs.
  22516. SeeAlso: AX=BA20h,AX=BA13h
  22517. --------n-15BA11-----------------------------
  22518. INT 15 - HP OmniShare - Pen Driver - SET THE COMMUNICATION LED STATE
  22519.     AX = BA11h
  22520.     BL = new LED state (00h steady, 01h flashing)
  22521. Return: CF clear if successful
  22522.     CF set on error
  22523. Note:    this function is for use by communication software to give visual
  22524.       feedback of active communications even if the display is in standby
  22525.       mode.
  22526. SeeAlso: AX=BA10h,AX=BA24h
  22527. --------n-15BA12-----------------------------
  22528. INT 15 - HP OmniShare - Pen Driver - STORE PEN BATTERY CHARGE
  22529.     AX = BA12h
  22530.     BL = new battery state (00h good, 01h low charge)
  22531. Return: CF set on error
  22532.     CF clear if successfully stored in CMOS
  22533. Note:    The last report will be displayed by the Power-On Self Test the next
  22534.       time the OmniShare boots.  This allows something meaningful to be
  22535.       reported even if the pen is not detected during the POST.
  22536. SeeAlso: AX=BA13h
  22537. --------n-15BA13-----------------------------
  22538. INT 15 - HP OmniShare - Pen Driver - GET PEN BATTERY CHARGE
  22539.     AX = BA13h
  22540. Return: CF clear if successful
  22541.         BL = pen battery state (00h good, 01h low charge)
  22542.     CF set on error
  22543. Note:    returns the last value set by AX=BA12h.
  22544. SeeAlso: AX=BA12h
  22545. --------p-15BA20-----------------------------
  22546. INT 15 - HP OmniShare - STANDBY.COM - INSTALLATION CHECK
  22547.     AX = BA20h
  22548. Return: CF clear if successful (installed)
  22549.     CF set on error (not installed)
  22550. Notes:    The display controller can enter a standby mode after a given timeout,
  22551.       to conserve power or (for the OmniShare) to increase the life of
  22552.       the backlight.
  22553.     A side effect of standby mode is that the communications LED turns on
  22554.       automatically when the display is in standby mode.  This is done in
  22555.       hardware, and is intended to show that the unit is still on.
  22556. SeeAlso: AX=BA10h,AX=BA20h,AX=BA22h,AX=BA24h,AX=BA26h
  22557. --------p-15BA21-----------------------------
  22558. INT 15 - HP OmniShare - STANDBY.COM - SET STANDBY DURATION
  22559.     AX = BA21h
  22560.     BL = new timeout before standby mode in minutes (01h-0Fh)
  22561.         00h to disable automatic switch to standby mode
  22562. Return: CF clear if successful
  22563.     CF set on error (function not supported)
  22564. Note:    The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
  22565.       instead of (N*60) seconds as documented.
  22566. SeeAlso: AX=BA20h,AX=BA22h
  22567. --------p-15BA22-----------------------------
  22568. INT 15 - HP OmniShare - STANDBY.COM - GET STANDBY DURATION
  22569.     AX = BA22h
  22570. Return: CF clear if successful
  22571.        BL = standy duration in minutes (01h-0Fh), or 00h if disabled
  22572.     CF set on error (function not supported)
  22573. Note:    The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
  22574.       instead of (N*60) seconds as documented.
  22575. SeeAlso: AX=BA20h,AX=BA21h
  22576. --------p-15BA23-----------------------------
  22577. INT 15 - HP OmniShare - STANDBY.COM - TURN ON THE SCREEN IMMEDIATELY
  22578.     AX = BA23h
  22579. Return: CF clear if successful
  22580.     CF set on error
  22581. SeeAlso: AX=BA11h,AX=BA20h,AX=BA24h
  22582. --------p-15BA24-----------------------------
  22583. INT 15 - HP OmniShare - STANDBY.COM - TURN OFF THE SCREEN IMMEDIATELY
  22584.     AX = BA24h
  22585. Return: CF clear if successful
  22586.     CF set on error
  22587. Note:    This function is not implemented yet. Reserved for future versions
  22588.       of the OmniShare.
  22589. SeeAlso: AX=BA11h,AX=BA20h,AX=BA23h
  22590. --------p-15BA25-----------------------------
  22591. INT 15 - HP OmniShare - STANDBY.COM - PREPARE FOR UNINSTALL
  22592.     AX = BA25h
  22593. Return: CF clear if successful
  22594.         AX = 25BAh
  22595.         BX = PSP of STANDBY.COM resident portion
  22596.         DX:CX -> previous INT 15 handler
  22597.     CF set on error
  22598. Note:    This function is used internally by the STANDBY.COM /u option, and
  22599.       should not be used by application programs.
  22600. SeeAlso: AX=BA20h
  22601. --------p-15BA26-----------------------------
  22602. INT 15 - HP OmniShare - STANDBY.COM - IS THE DISPLAY IN STANDBY MODE?
  22603.     AX = BA26h
  22604. Return: CF clear if successful
  22605.         AL    = display state (00h active, 01h in standby mode)
  22606.     CF set on error (function not supported)
  22607. SeeAlso: AX=BA20h,AX=BA23h
  22608. --------p-15BA27-----------------------------
  22609. INT 15 - HP OmniShare - STANDBY.COM - RESERVED FUNCTIONS
  22610.     AX = BA27h to BA2Fh
  22611. Desc:    reserved for future use
  22612. --------b-15BC-------------------------------
  22613. INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED FOR DELAY LOOPS
  22614.     AH = BCh
  22615. Return: CF clear
  22616.     (Phoenix 1.10 10a) BYTE 0040h:00B0h set to delay loop count
  22617.     (Dell 4xxDE BIOS A11) WORD 0040h:00ECh set to delay loop count
  22618. Note:    this function reads system timer channel 0 twice, then does
  22619.       calculations on the returned values to determine the delay loop
  22620.       counter needed by the BIOS for beeps and floppy timeouts
  22621. SeeAlso: AX=2305h,MEM 0040h:00B0h
  22622. --------E-15BF00-----------------------------
  22623. INT 15 - Rational Systems DOS/16M - ???
  22624.     AX = BF00h
  22625.     ???
  22626. Return: ???
  22627. Note:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  22628. SeeAlso: AX=BF02h
  22629. --------E-15BF01-----------------------------
  22630. INT 15 - Rational Systems DOS/16M - ???
  22631.     AX = BF01h
  22632.     ???
  22633. Return: ???
  22634. Notes:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  22635.     called by DOS/4GW
  22636. SeeAlso: AX=BF00h,AX=BF02h
  22637. --------E-15BF02DX0000-----------------------
  22638. INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK
  22639.     AX = BF02h
  22640.     DX = 0000h
  22641. Return: DX = nonzero if installed
  22642.         DX:SI -> XBRK structure (see #0432)
  22643. Note:    this function is also supported by DOS/4G
  22644. SeeAlso: AX=BF01h,AX=BFDCh,AX=BFDEh/BX=0000h
  22645. SeeAlso: INT 21/AH=FFh/DH=0Eh,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h
  22646.  
  22647. Format of DOS/16M XBRK structure:
  22648. Offset    Size    Description    (Table 0432)
  22649.  00h    DWORD    linear address of first available byte
  22650.  04h    DWORD    linear address of last available byte + 1 ???
  22651.  08h    DWORD    real-mode address of XBRK structure???
  22652.  0Ch    DWORD    ???
  22653.  10h  2 BYTEs    ???
  22654.  12h    WORD    segment of ???
  22655.  14h  8 BYTEs    ???
  22656.  1Ch 512 BYTEs    protected-mode IDT
  22657. 21Ch  N BYTEs    protected-mode GDT
  22658. --------E-15BF03-----------------------------
  22659. INT 15 - Rational Systems DOS/4GW - UNINSTALL???
  22660.     AX = BF03h
  22661.     BX = PSP segment of extender
  22662.     ???
  22663. Return: ???
  22664. Note:    if BX is not the PSP segment of the extender, it passes the call down
  22665.       the INT 15 chain; this allows nested instances of the extender
  22666. SeeAlso: AX=BF06h
  22667. --------E-15BF04-----------------------------
  22668. INT 15 - Rational Systems DOS/4GW - ???
  22669.     AX = BF04h
  22670.     BX = PSP segment of extender
  22671. Return: nothing???
  22672. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  22673.       the INT 15 chain; this allows nested instances of the extender
  22674.     grabs INT 2Fh and installs handlers for INT 2F/AX=1605h-1607h
  22675. SeeAlso: INT 2F/AX=1607h/BX=22C0h
  22676. --------E-15BF05-----------------------------
  22677. INT 15 - Rational Systems DOS/4GW - INITIALIZE PROTECTED-MODE INTERFACE
  22678.     AX = BF05h
  22679.     BX = PSP segment of extender
  22680. Return: nothing???
  22681. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  22682.       the INT 15 chain; this allows nested instances of the extender
  22683.     calls INT 67/AX=DE01h if ???
  22684. --------E-15BF06-----------------------------
  22685. INT 15 - Rational Systems DOS/4GW - ???
  22686.     AX = BF06h
  22687.     BX = PSP segment of extender
  22688.     ???
  22689. Return: ???
  22690. Note:    if BX is not the PSP segment of the extender, it passes the call down
  22691.       the INT 15 chain; this allows nested instances of the extender
  22692. SeeAlso: AX=BF03h
  22693. --------E-15BFDCDX0000-----------------------
  22694. INT 15 - Rational Systems DOS/4GW - INSTALLATION CHECK
  22695.     AX = BFDCh
  22696.     DX = 0000h
  22697.     SI = 0000h
  22698. Return: DX = nonzero if installed
  22699.         DX:SI -> XBRK structure (see #0432)
  22700. SeeAlso: AX=BF02h
  22701. --------E-15BFDEBX0000-----------------------
  22702. INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK
  22703.     AX = BFDEh
  22704.     BX = 0000h
  22705. Return: AX = ??? (0003h)
  22706.     BX = FFFFh
  22707. SeeAlso: AX=BF02h
  22708. --------E-15BFDEBX0001-----------------------
  22709. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROCESS MANAGER NAME
  22710.     AX = BFDEh
  22711.     BX = 0001h
  22712. Return: BX = 0000h (success)
  22713.     CX:DX -> name of process manager executable
  22714. SeeAlso: AX=BFDEh/BX=0000h
  22715. --------E-15BFDEBX0002-----------------------
  22716. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  22717.     AX = BFDEh
  22718.     BX = 0002h
  22719.     CX:DX -> ???
  22720. Return: BX = 0000h (success)
  22721. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h
  22722. --------E-15BFDEBX0003-----------------------
  22723. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  22724.     AX = BFDEh
  22725.     BX = 0003h
  22726. Return: BX = 0000h (success)
  22727.     CX:DX -> ???
  22728. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h
  22729. --------E-15BFDEBX0004-----------------------
  22730. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  22731.     AX = BFDEh
  22732.     BX = 0004h
  22733.     CL = ???
  22734. Return: BX = 0000h (success)
  22735.     CX:DX -> XBRK structure (see #0432)
  22736. SeeAlso: AX=BFDEh/BX=0000h
  22737. --------E-15BFDEBX0005-----------------------
  22738. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  22739.     AX = BFDEh
  22740.     BX = 0005h
  22741.     CX = new value for ???
  22742. Return: BX = 0000h (success)
  22743.     AX = old value of ???
  22744.     DS:SI -> ??? (if AX nonzero on return)
  22745.     ES:DI -> ??? (if AX zero on return)
  22746. Note:    called by DOS4GW.EXE
  22747. SeeAlso: AX=BFDEh/BX=0000h
  22748. --------E-15BFDEBX0006-----------------------
  22749. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  22750.     AX = BFDEh
  22751.     BX = 0006h
  22752. Return: BX = 0000h (success)
  22753.     AH = interrupt number??? (BEh)
  22754.     CX:DX = ???
  22755. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE"DESQview"
  22756. --------E-15BFDEBX0007-----------------------
  22757. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  22758.     AX = BFDEh
  22759.     BX = 0007h
  22760.     CX:DX = ???
  22761. Return: BX = 0000h (success)
  22762. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h
  22763. --------E-15BFDEBX0008-----------------------
  22764. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  22765.     AX = BFDEh
  22766.     BX = 0008h
  22767.     CX = segment of ???
  22768.     DS = ???
  22769. Return: BX = status
  22770.         0000h successful
  22771.         AL = ??? (80h or C0h)
  22772.         DX = ??? (0603h) if AL=C0h
  22773.         0001h failed
  22774.         AX = 0000h
  22775. Note:    called by DOS4GW.EXE
  22776. SeeAlso: AX=BFDEh/BX=0000h
  22777. --------E-15BFDEBX0009-----------------------
  22778. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER
  22779.     AX = BFDEh
  22780.     BX = 0009h
  22781. Return: BX = 0000h (success)
  22782.     CX:DX -> full pathname to LOAD32.EXP
  22783. SeeAlso: AX=BFDEh/BX=0000h
  22784. --------E-15BFDEBX000A-----------------------
  22785. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - DECREMENT ???
  22786.     AX = BFDEh
  22787.     BX = 000Ah
  22788. Return: BX = 0000h (success)
  22789.     AX = new value of ??? counter
  22790. Notes:    also resets a variety of values if the counter goes negative
  22791.     called by DOS4GW.EXE
  22792. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh
  22793. --------E-15BFDEBX000B-----------------------
  22794. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - INCREMENT ???
  22795.     AX = BFDEh
  22796.     BX = 000Bh
  22797. Return: AX = new value of ??? counter
  22798. Note:    called by DOS4GW.EXE
  22799. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah
  22800. --------E-15BFDEBX000C-----------------------
  22801. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  22802.     AX = BFDEh
  22803.     BX = 000Ch
  22804.     CL = ???
  22805.         00h
  22806.         nonzero
  22807. Return: ???
  22808. SeeAlso: AX=BFDEh/BX=0000h
  22809. --------E-15BFDEBX000D-----------------------
  22810. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  22811.     AX = BFDEh
  22812.     BX = 000Dh
  22813.     ???
  22814. Return: ???
  22815. SeeAlso: AX=BFDEh/BX=0000h
  22816. --------E-15BFDEBX000E-----------------------
  22817. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  22818.     AX = BFDEh
  22819.     BX = 000Eh
  22820.     DX:CX -> ???
  22821. Return: AX = segment of handle for calling task
  22822.     BX = ??? (probably destroyed)
  22823.     DX:CX -> ???
  22824. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h
  22825. --------E-15BFDEBX000F-----------------------
  22826. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  22827.     AX = BFDEh
  22828.     BX = 000Fh
  22829. Return: AX = segment of handle for calling task
  22830.     BX = ??? (probably destroyed)
  22831.     DX:CX -> ???
  22832. Note:    identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h
  22833. SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h
  22834. --------E-15BFDEBX0010-----------------------
  22835. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET TASK HANDLE
  22836.     AX = BFDEh
  22837.     BX = 0010h
  22838. Return: AX = segment of caller's task handle
  22839.     BX destroyed
  22840. SeeAlso: AX=BFDEh/BX=000Fh
  22841. --------E-15BFDEBX0011-----------------------
  22842. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  22843.     AX = BFDEh
  22844.     BX = 0011h
  22845. Return: CX = code segment of DVDOS4GX.DVR
  22846.     BX = ??? (0004h)
  22847. SeeAlso: AX=BFDEh/BX=0000h
  22848. --------E-15BFDEBX0012-----------------------
  22849. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  22850.     AX = BFDEh
  22851.     BX = 0012h
  22852. Return: DX = code segment of DVDOS4GX.DVR
  22853.     BX = ??? (012Ch)
  22854.     CX = ??? (0006h)
  22855. SeeAlso: AX=BFDEh/BX=0000h
  22856. --------E-15BFDEBX0013-----------------------
  22857. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  22858.     AX = BFDEh
  22859.     BX = 0013h
  22860. Return: DX:CX -> ???
  22861. SeeAlso: AX=BFDEh/BX=000Eh
  22862. --------E-15BFDEBX0014-----------------------
  22863. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - LOCK ??? MAILBOX
  22864.     AX = BFDEh
  22865.     BX = 0014h
  22866.     CX = index of ??? mailbox
  22867.         (0000h-0004h valid, but no range checking done)
  22868. Return: AX,BX destroyed
  22869. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  22870. --------E-15BFDEBX0015-----------------------
  22871. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - UNLOCK ??? MAILBOX
  22872.     AX = BFDEh
  22873.     BX = 0015h
  22874.     CX = index of ??? mailbox
  22875.         (0000h-0004h valid, but no range checking done)
  22876. Return: AX,BX destroyed
  22877. SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h
  22878. --------E-15BFDEBX0016-----------------------
  22879. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED
  22880.     AX = BFDEh
  22881.     BX = 0016h
  22882.     CX = index of ??? mailbox
  22883.         (0000h-0004h valid, but no range checking done)
  22884. Return: AX = status
  22885.         0000h no one owns mailbox
  22886.         0001h mailbox has an owner
  22887.     BX destroyed
  22888. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  22889. --------E-15BFDEBX0017-----------------------
  22890. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? MAILBOX OWNER
  22891.     AX = BFDEh
  22892.     BX = 0017h
  22893.     CX = index of ??? mailbox
  22894.         (0000h-0004h valid, but no range checking done)
  22895. Return: AX = segment of mailbox owner's handle
  22896.     BX = segment of caller's task handle
  22897. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h
  22898. --------E-15BFDEBXFFFD-----------------------
  22899. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  22900.     AX = BFDEh
  22901.     BX = FFFDh
  22902. Return: CX:DX = ???
  22903. SeeAlso: AX=BFDEh/BX=FFFEh
  22904. --------E-15BFDEBXFFFE-----------------------
  22905. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  22906.     AX = BFDEh
  22907.     BX = FFFEh
  22908.     CX:DX = ???
  22909. SeeAlso: AX=BFDEh/BX=FFFDh
  22910. --------E-15BFDEBXFFFF-----------------------
  22911. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - NOP
  22912.     AX = BFDEh
  22913.     BX = FFFFh
  22914. SeeAlso: AX=BFDEh/BX=0000h
  22915. --------B-15C0-------------------------------
  22916. INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS)
  22917.     AH = C0h
  22918. Return: CF set if BIOS doesn't support call
  22919.     CF clear on success
  22920.         ES:BX -> ROM table (see #0433)
  22921.     AH = status
  22922.         00h successful
  22923.         86h unsupported function
  22924. Notes:    the 1/10/86 XT BIOS returns an incorrect value for the feature byte
  22925.     the configuration table is at F000h:E6F5h in 100% compatible BIOSes
  22926.     Dell machines contain the signature "DELL" or "Dell" at absolute FE076h
  22927.       and a model byte at absolute address FE845h (see #0440)
  22928.     Hewlett-Packard machines contain the signature "HP" at F000h:00F8h and
  22929.       a product identifier at F000h:00FAh (see #0443)
  22930.     Compaq machines can be identified by the signature string "COMPAQ" at
  22931.       F000h:FFEAh, and is preceded by additional information (see #0441)
  22932.     Tandy 1000 machines contain 21h in the byte at F000h:C000h and FFh in
  22933.       the byte at FFFFh:000Eh; Tandy 1000SL/TL machines only provide the
  22934.       first three data bytes (model/submodel/revision) in the returned
  22935.       table
  22936.     Toshiba laptops contain the signature "TOSHIBA" at FE010h as part of
  22937.       a laptop information record at F000h:E000h (see #0444)
  22938.     some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte
  22939.       past the end of the configuration table
  22940.     the Phoenix 386 BIOS contains a second version and date string
  22941.       (presumably the last modification for that OEM version) beginning at
  22942.       F000h:FFD8h, with each byte doubled (so that both ROM chips contain
  22943.       the complete information)
  22944. SeeAlso: AH=C7h,AH=C9h,AX=D100h,AX=D103h
  22945.  
  22946. Format of ROM configuration table:
  22947. Offset    Size    Description    (Table 0433)
  22948.  00h    WORD    number of bytes following
  22949.  02h    BYTE    model (see #0439)
  22950.  03h    BYTE    submodel (see #0439)
  22951.  04h    BYTE    BIOS revision: 0 for first release, 1 for 2nd, etc.
  22952.  05h    BYTE    feature byte 1 (see #0434)
  22953.  06h    BYTE    feature byte 2 (see #0435)
  22954.  07h    BYTE    feature byte 3 (see #0436)
  22955.  08h    BYTE    feature byte 4 (see #0437)
  22956.  09h    BYTE    feature byte 5 (see #0438)
  22957.         ??? (08h) (Phoenix 386 v1.10)
  22958.         ??? (0Fh) (Phoenix 486 v1.03 PCI)
  22959. ---AWARD BIOS---
  22960.  0Ah  N BYTEs    AWARD copyright notice
  22961. ---Phoenix BIOS---
  22962.  0Ah    BYTE    ??? (00h)
  22963.  0Bh    BYTE    major version
  22964.  0Ch    BYTE    minor version (BCD)
  22965.  0Dh  4 BYTEs    ASCIZ string "PTL" (Phoenix Technologies Ltd)
  22966. ---Quadram Quad386---
  22967.  0Ah 17 BYTEs    ASCII signature string "Quadram Quad386XT"
  22968.  
  22969. Bitfields for feature byte 1:
  22970. Bit(s)    Description    (Table 0434)
  22971.  7    DMA channel 3 used by hard disk BIOS
  22972.  6    2nd 8259 installed
  22973.  5    Real-Time Clock installed
  22974.  4    INT 15/AH=4Fh called upon INT 09h
  22975.  3    wait for external event (INT 15/AH=41h) supported
  22976.  2    extended BIOS area allocated (usually at top of RAM)
  22977.  1    bus is Micro Channel instead of ISA
  22978.  0    system has dual bus (Micro Channel + ISA)
  22979. SeeAlso: #0433,#0435
  22980.  
  22981. Bitfields for feature byte 2:
  22982. Bit(s)    Description    (Table 0435)
  22983.  7    32-bit DMA supported
  22984.  6    INT 16/AH=09h (keyboard functionality) supported (see #0509)
  22985.  5    INT 15/AH=C6h (get POS data) supported
  22986.  4    INT 15/AH=C7h (return memory map info) supported
  22987.  3    INT 15/AH=C8h (en/disable CPU functions) supported
  22988.  2    non-8042 keyboard controller
  22989.  1    data streaming supported
  22990.  0    reserved
  22991. SeeAlso: #0433,#0436,AH=C6h,AH=C7h,AH=C8h,INT 16/AH=09h
  22992.  
  22993. Bitfields for feature byte 3:
  22994. Bit(s)    Description    (Table 0436)
  22995.  7    not used
  22996.  6-5    reserved
  22997.  4    POST supports ROM-to-RAM enable/disable
  22998.  3    SCSI subsystem supported on system board
  22999.  2    information panel installed
  23000.  1    IML (Initial Machine Load) system (BIOS loaded from disk)
  23001.  0    SCSI supported in IML
  23002. SeeAlso: #0433,#0435,#0436
  23003.  
  23004. Bitfields for feature byte 4:
  23005. Bit(s)    Description    (Table 0437)
  23006.  7    IBM "private" (set on N51SX, CL57SX)
  23007.  6    system has EEPROM
  23008.  5-3    ABIOS presence
  23009.     001 not supported
  23010.     010 supported in ROM
  23011.     011 supported in RAM (must be loaded)
  23012.  2    "private"
  23013.  1    system supports memory split at/above 16M
  23014.  0    POSTEXT directly supported by POST
  23015. SeeAlso: #0433,#0436,#0438
  23016.  
  23017. Bitfields for feature byte 5 (IBM):
  23018. Bit(s)    Description    (Table 0438)
  23019.  7-5    IBM "private"
  23020.  4-2    reserved
  23021.  1    system has enhanced mouse mode
  23022.  0    flash EPROM
  23023. SeeAlso: #0433,#0437
  23024.  
  23025. (Table 0439)
  23026. Values for model/submodel/revision:
  23027. Model  Submdl  Rev    BIOS date    System
  23028.  FFh    *    *    04/24/81    PC (original)
  23029.  FFh    *    *    10/19/81    PC (some bugfixes)
  23030.  FFh    *    *    10/27/82    PC (HD, 640K, EGA support)
  23031.  FFh    00h    rev      ???        Tandy 1000SL
  23032.  FFh    01h    rev      ???        Tandy 1000TL
  23033.  FFh    46h    ***      ???        Olivetti M15
  23034.  FEh    *    *    08/16/82    PC XT
  23035.  FEh    *    *    11/08/82    PC XT and Portable
  23036.  FEh    *    *    ../..x..    Toshiba laptops up to ~1987
  23037.                     ("x"=product ID) (see #0445)
  23038.  FEh    43h    ***      ???        Olivetti M240
  23039.  FEh    A6h    ???      ???        Quadram Quad386
  23040.  FDh    *    *    06/01/83    PCjr
  23041.  FCh    *    *    01/10/84    AT models 068,099 6 MHz 20MB
  23042.  FCh    *    *    02/25/93    Linux DOSEMU (all versions)
  23043.  FCh    00h    00h      ???        PC3270/AT
  23044.  FCh    00h    01h    06/10/85    AT model  239      6 MHz 30MB
  23045.  FCh    00h    > 01h      ???        7531/2 Industrial AT
  23046.  FCh    01h    00h    11/15/85    AT models 319,339 8 MHz, Enh Keyb, 3.5"
  23047.  FCh    01h    00h    09/17/87    Tandy 3000
  23048.  FCh    01h    00h    ../..x..    Toshiba laptops since ~1988
  23049.                     ("x"=product ID) (see #0445)
  23050.  FCh    01h    00h    03/08/93    Compaq DESKPRO/i
  23051.  FCh    01h    00h     various    Compaq DESKPRO, SystemPro, ProSignia
  23052.  FCh    01h    00h    07/20/93    Zenith Z-Lite 425L
  23053.  FCh    01h    00h    04/09/90    AMI BIOS
  23054.  FCh    01h    20h    06/10/92    AST
  23055.  FCh    01h    30h      ???        Tandy 3000NL
  23056.  FCh    01h    ???      ???        Compaq 286/386
  23057.  FCh    02h    00h    04/21/86    PC XT-286
  23058.  FCh    02h    00h     various    Compaq LTE Lite
  23059.  FCh    02h    00h    08/05/93    Compaq Contura 486/486c/486cx
  23060.  FCh    02h    00h    08/11/88    SoftWindows 1.0.1 (Power Macintosh)
  23061.  FCh    04h    00h    02/13/87     ** PS/2 Model 50 (10 MHz/1 ws 286)
  23062.  FCh    04h    01h    05/09/87    PS/2 Model 50 (10 Mhz 286, LW-type 32)
  23063.  FCh    04h    02h      ???        PS/2 Model 50
  23064.  FCh    04h    02h    01/28/88    PS/2 Model 50Z (10 Mhz 286, LW-type 33)
  23065.  FCh    04h    03h    04/18/88    PS/2 Model 50Z (10 MHz/0 ws 286)
  23066.  FCh    04h    04h      ???        PS/2 Model 50Z
  23067.  FCh    05h    00h    02/13/87     ** PS/2 Model 60 (10 MHz 286)
  23068.  FCh    06h    00h      ???        IBM 7552-140 "Gearbox"
  23069.  FCh    06h    01h      ???        IBM 7552-540 "Gearbox"
  23070.  FCh    08h    ***      ???        Epson, unknown model
  23071.  FCh    08h    00h      ???        PS/2 Model 25/286
  23072.  FCh    09h    00h      ???        PS/2 Model 25 (10 MHz 286)
  23073.  FCh    09h    00h    08/25/88    PS/2 Model 30 286 (10 Mhz, LW-type 37)
  23074.  FCh    09h    02h    06/28/89    PS/2 Model 30-286
  23075.  FCh    09h    02h    06/28/89    PS/2 Model 25 286 (10 Mhz, LW-type 37)
  23076.  FCh    0Bh    00h    12/01/89    PS/1 (LW-Type 44)
  23077.  FCh    0Bh    00h    02/16/90    PS/1 Model 2011 (10 MHz 286)
  23078.  FCh    20h    00h    02/18/93    Compaq ProLinea
  23079.  FCh    30h    ***      ???        Epson, unknown model
  23080.  FCh    31h    ***      ???        Epson, unknown model
  23081.  FCh    33h    ***      ???        Epson, unknown model
  23082.  FCh    42h    ***      ???        Olivetti M280
  23083.  FCh    45h    ***      ???        Olivetti M380 (XP 1, XP3, XP 5)
  23084.  FCh    48h    ***      ???        Olivetti M290
  23085.  FCh    4Fh    ***      ???        Olivetti M250
  23086.  FCh    50h    ***      ???        Olivetti M380 (XP 7)
  23087.  FCh    51h    ***      ???        Olivetti PCS286
  23088.  FCh    52h    ***      ???        Olivetti M300
  23089.  FCh    81h    00h    01/15/88    Phoenix 386 BIOS v1.10 10a
  23090.  FCh    81h    01h      ???        "OEM machine"
  23091.  FCh    82h    01h      ???        "OEM machine"
  23092.  FCh    94h    00h      ???        Zenith 386
  23093.  FBh    00h    01h    01/10/86    PC XT-089, Enh Keyb, 3.5" support
  23094.  FBh    00h    01h    05/13/94    HP 200LX 2MB BIOS 1.01 A D german
  23095.  FBh    00h    02h    05/09/86    PC XT
  23096.  FBh    00h    04h    08/19/93    HP 100LX 1MB BIOS 1.04 A
  23097.  FBh    4Ch    ***      ???        Olivetti M200
  23098.  FAh    00h    00h    09/02/86    PS/2 Model 30 (8 MHz 8086)
  23099.  FAh    00h    01h    12/12/86    PS/2 Model 30
  23100.  FAh    00h    02h    02/05/87    PS/2 Model 30
  23101.  FAh    01h    00h    06/26/87    PS/2 Model 25/25L (8 MHz 8086)
  23102.  FAh    30h    00h      ???        IBM Restaurant Terminal
  23103.  FAh    4Eh    ***      ???        Olivetti M111
  23104.  FAh    FEh    00h      ???        IBM PCradio 9075
  23105.  F9h    00h    00h    09/13/85    PC Convertible
  23106.  F9h    FFh    00h      ???        PC Convertible
  23107.  F8h    00h    00h    03/30/87     ** PS/2 Model 80 (16MHz 386)
  23108.  F8h    00h    00h      ???        PS/2 Model 75 486 (33Mhz 486)
  23109.  F8h    01h    00h    10/07/87    PS/2 Model 80 (20MHz 386)
  23110.  F8h    02h    00h      ???        PS/2 Model 55-5571
  23111.  F8h    04h    00h    01/29/88    PS/2 Model 70 (20 Mhz 386DX,LW-type 33)
  23112.  F8h    04h    02h    04/11/88    PS/2 Model 70 20MHz, type 2 system brd
  23113.  F8h    04h    03h    03/17/89    PS/2 Model 70 20MHz, type 2 system brd
  23114.  F8h    05h    00h      ???        IBM PC 7568
  23115.  F8h    06h    00h      ???        PS/2 Model 55-5571
  23116.  F8h    07h    00h      ???        IBM PC 7561/2
  23117.  F8h    07h    01h      ???        PS/2 Model 55-5551
  23118.  F8h    07h    02h      ???        IBM PC 7561/2
  23119.  F8h    07h    03h      ???        PS/2 Model 55-5551
  23120.  F8h    09h    00h    01/29/88    PS/2 Model 70 16MHz 386DX, type 1 sysbd
  23121.  F8h    09h    02h    04/11/88    PS/2 Model 70 some models
  23122.  F8h    09h    03h    03/17/89    PS/2 Model 70 some models
  23123.  F8h    09h    04h    12/15/89    PS/2 Model 70 (16 Mhz 386, LW-type 33)
  23124.  F8h    0Bh    00h    01/18/89    PS/2 Model P70 (8573-121) typ 2 sys brd
  23125.  F8h    0Bh    02h    12/16/89    PS/2 Model P70 ??
  23126.  F8h    0Ch    00h    11/02/88    PS/2 Model 55SX (16 MHz 386SX)
  23127.  F8h    0Dh    00h      ???        PS/2 Model 70 25MHz, type 3 system brd
  23128.  F8h    0Dh    00h    06/08/88    PS/2 Model 70 386 25MHz, type 3 sys brd
  23129.  F8h    0Dh    01h    02/20/89    PS/2 Model 70 386 25MHz, type 3 sys brd
  23130.  F8h    0Dh    ???    12/01/89    PS/2 Model 70 486 25Mhz, type 3 sys brd
  23131.  F8h    0Eh    00h      ???        PS/1 486SX
  23132.  F8h    0Fh    00h      ???        PS/1 486DX
  23133.  F8h    10h    00h      ???        PS/2 Model 55-5551
  23134.  F8h    11h    00h    10/01/90    PS/2 Model 90 XP (25 MHz 486)
  23135.  F8h    12h    00h      ???        PS/2 Model 95 XP
  23136.  F8h    13h    00h    10/01/90    PS/2 Model 90 XP (33 MHz 486)
  23137.  F8h    14h    00h    10/01/90    PS/2 Model 90-AK9 (25 MHz 486), 95 XP
  23138.  F8h    15h    00h      ???        PS/2 Model 90 XP
  23139.  F8h    16h    00h    10/01/90    PS/2 Model 90-AKD / 95XP486 (33MHz 486)
  23140.  F8h    17h    00h      ???        PS/2 Model 90 XP
  23141.  F8h    19h    05h      ???        PS/2 Model 35/35LS or 40 (20 MHz 386SX)
  23142.  F8h    19h    05h    03/15/91    PS/2 Model 35 SX / 40 SX (LW-type 37)
  23143.  F8h    19h    06h    04/04/91    PS/2 Model 35 SX / 40 SX (LW-type 37)
  23144.  F8h    1Ah    00h      ???        PS/2 Model 95 XP
  23145.  F8h    1Bh    00h    09/29/89    PS/2 Model 70 486 (25 Mhz 386DX)
  23146.  F8h    1Bh    00h    10/02/89    PS/2 Model 70-486 (25 MHz 486)
  23147.  F8h    1Ch    00h    02/08/90    PS/2 Model 65-121 / 65 SX (16MHz 386SX)
  23148.  F8h    1Eh    00h    02/08/90    PS/2 Model 55LS (16 MHz 386SX)
  23149.  F8h    23h    00h      ???        PS/2 Model L40 SX
  23150.  F8h    23h    01h      ???        PS/2 Model L40 SX (20 MHz 386SX)
  23151.  F8h    23h    02h    02/27/91    PS/2 Model L40 SX (20Mhz386SX,LW-typ37)
  23152.  F8h    25h    00h      ???        PS/2 Model 57 SLC
  23153.  F8h    25h    06h      ???        PS/2 Model M57 (20 MHz 386SLC)
  23154.  F8h    26h    00h      ???        PS/2 Model 57 SX
  23155.  F8h    26h    01h      ???        PS/2 Model 57 (20 MHz 386SX)
  23156.  F8h    26h    02h    07/03/91    PS/2 Model 57 SX (20Mhz 386SX, SCSI)
  23157.  F8h    28h    00h      ???        PS/2 Model 95 XP
  23158.  F8h    29h    00h      ???        PS/2 Model 90 XP
  23159.  F8h    2Ah    00h      ???        PS/2 Model 95 XP (50 MHz 486)
  23160.  F8h    2Bh    00h      ???        PS/2 Model 90 / 90XP486 (50 MHz 486)
  23161.  F8h    2Ch    00h      ???        PS/2 Model 95 XP
  23162.  F8h    2Ch    01h      ???        PS/2 Model 95 (20 MHz 486SX)
  23163.  F8h    2Dh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX)
  23164.  F8h    2Eh    00h      ???        PS/2 Model 95 XP
  23165.  F8h    2Eh    00h      ???        PS/2 Model 95 XP486 (20 Mhz 486SX)
  23166.  F8h    2Eh    01h      ???        PS/2 Model 95 (20 MHz 486SX + 487SX)
  23167.  F8h    2Fh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX + 487SX)
  23168.  F8h    30h    00h      ???        PS/1 Model 2121 (16 MHz 386SX)
  23169.  F8h    33h    00h      ???        PS/2 Model 30-386
  23170.  F8h    34h    00h      ???        PS/2 Model 25-386
  23171.  F8h    36h    00h      ???        PS/2 Model 95 XP
  23172.  F8h    37h    00h      ???        PS/2 Model 90 XP
  23173.  F8h    38h    00h      ???        PS/2 Model 57
  23174.  F8h    39h    00h      ???        PS/2 Model 95 XP
  23175.  F8h    3Fh    00h      ???        PS/2 Model 90 XP
  23176.  F8h    40h    00h      ???        PS/2 Model 95 XP
  23177.  F8h    41h    00h      ???        PS/2 Model 77
  23178.  F8h    45h    00h      ???        PS/2 Model 90 XP (Pentium)
  23179.  F8h    46h    00h      ???        PS/2 Model 95 XP (Pentium)
  23180.  F8h    47h    00h      ???        PS/2 Model 90/95 E (Pentium)
  23181.  F8h    48h    00h      ???        PS/2 Model 85
  23182.  F8h    49h    00h      ???        PS/ValuePoint 325T
  23183.  F8h    4Ah    00h      ???        PS/ValuePoint 425SX
  23184.  F8h    4Bh    00h      ???        PS/ValuePoint 433DX
  23185.  F8h    4Eh    00h      ???        PS/2 Model 295
  23186.  F8h    50h    00h      ???        PS/2 Model P70 (8573) (16 MHz 386)
  23187.  F8h    50h    01h    12/16/89    PS/2 Model P70 (8570-031)
  23188.  F8h    52h    00h      ???        PS/2 Model P75 (33 MHz 486)
  23189.  F8h    56h    00h      ???        PS/2 Model CL57 SX
  23190.  F8h    57h    00h      ???        PS/2 Model 90 XP
  23191.  F8h    58h    00h      ???        PS/2 Model 95 XP
  23192.  F8h    59h    00h      ???        PS/2 Model 90 XP
  23193.  F8h    5Ah    00h      ???        PS/2 Model 95 XP
  23194.  F8h    5Bh    00h      ???        PS/2 Model 90 XP
  23195.  F8h    5Ch    00h      ???        PS/2 Model 95 XP
  23196.  F8h    5Dh    00h      ???        PS/2 Model N51 SLC
  23197.  F8h    5Eh    00h      ???        IBM ThinkPad 700
  23198.  F8h    61h    ***      ???        Olivetti P500
  23199.  F8h    62h    ***      ???        Olivetti P800
  23200.  F8h    80h    00h      ???        PS/2 Model 80 (25 MHz 386)
  23201.  F8h    80h    01h    11/21/89    PS/2 Model 80-A21 (25 Mhz 386)
  23202.  F8h    81h    00h      ???        PS/2 Model 55-5502
  23203.  F8h    87h    00h      ???        PS/2 Model N33SX
  23204.  F8h    88h    00h      ???        PS/2 Model 55-5530T
  23205.  F8h    97h    00h      ???        PS/2 Model 55 Note N23SX
  23206.  F8h    99h    00h      ???        PS/2 Model N51 SX
  23207.  F8h    F2h    30h      ???        Reply Model 32
  23208.  F8h    F6h    30h      ???        Memorex Telex
  23209.  F8h    FDh    00h      ???        IBM Processor Complex (with VPD)
  23210.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX)
  23211.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX)
  23212.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX + 487SX)
  23213.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX + 487SX)
  23214.  E4h    ???    ???      ???        Triumph Adler PC/XT
  23215.  E1h    ???    ???      ???        ??? (checked for by DOS4GW.EXE)
  23216.  E1h    00h    00h      ???        PS/2 Model 55-5530 Laptop
  23217.  D9h    ???    ???      ???        Peacock XT
  23218.  9Ah    *    *      ???        Compaq XT/Compaq Plus
  23219.  30h    ???    ???      ???        Sperry PC
  23220.  2Dh    *    *      ???        Compaq PC/Compaq Deskpro
  23221.  ???    56h    ???      ???        Olivetti, unknown model
  23222.  ???    74h    ???      ???        Olivetti, unknown model
  23223. Notes:    BIOS dates may vary without changes to the revision code, especially
  23224.       for non-IBM machines
  23225.     * This BIOS call is not implemented in these early versions or under
  23226.       Linux's DOSEMU.  Read the Model byte at F000h:FFFEh and BIOS date at
  23227.       F000h:FFF5h instead.
  23228.    ** These BIOS versions require the DASDDRVR.SYS patches.
  23229.   *** These Olivetti and Epson machines store the submodel in the byte at
  23230.     F000h:FFFDh.
  23231. SeeAlso: #0433,#0440
  23232.  
  23233. (Table 0440)
  23234. Values for Dell model byte:
  23235.  02h    Dell 200
  23236.  03h    Dell 300
  23237.  05h    Dell 220
  23238.  06h    Dell 310
  23239.  07h    Dell 325
  23240.  09h    Dell 310A
  23241.  0Ah    Dell 316
  23242.  0Bh    Dell 220E
  23243.  0Ch    Dell 210
  23244.  0Dh    Dell 316SX
  23245.  0Eh    Dell 316LT
  23246.  0Fh    Dell 320LX
  23247.  11h    Dell 425E
  23248. SeeAlso: #0433,#0439
  23249.  
  23250. Format of Compaq product information:
  23251. Address        Size    Description    (Table 0441)
  23252.  F000h:FFE4h    BYTE    product family code (first byte)
  23253.  F000h:FFE4h    BYTE    Point release number
  23254.  F000h:FFE4h    BYTE    ROM version code
  23255.  F000h:FFE4h    BYTE    product family code (second byte)
  23256.  F000h:FFE8h    WORD    BIOS type code
  23257. SeeAlso: #0442,#0444
  23258.  
  23259. Format of Hewlett-Packard ROM ID at F000h:00F8h:
  23260. Offset    Size    Description    (Table 0442)
  23261.  00h  2 BYTEs    signature "HP" (48h 50h)
  23262.  02h  2 BYTEs    00h 00h
  23263.  04h    BYTE    secondary code revision
  23264.  05h    BYTE    primary code revision
  23265.  06h    BYTE    date code, year-1960 (BCD)
  23266.  07h    BYTE    date code, week of year (BCD)
  23267. SeeAlso: #0441,#0443
  23268.  
  23269. Bitfields for Hewlett-Packard product identifier:
  23270. Bit(s)    Description    (Table 0443)
  23271.  4-0    machine code
  23272.     0 original Vectra
  23273.     1 ES/12
  23274.     2 RS/20
  23275.     3 Portable/CS
  23276.     4 ES
  23277.     5 CS
  23278.     6 RS/16
  23279.     other reserved
  23280.  7-5    CPU type
  23281.     0 = 80286
  23282.     1 = 8088
  23283.     2 = 8086
  23284.     3 = 80386
  23285.     other reserved
  23286. SeeAlso: #0442
  23287.  
  23288. Format of Toshiba laptop information:
  23289. Offset    Size    Description    (Table 0444)
  23290.  00h  8 BYTEs    ASCII product number (e.g. "T2200SX ")
  23291.  08h  8 BYTEs    ASCII version number (e.g. "V1.20   ")
  23292.  10h  8 BYTEs    ASCII signature string "TOSHIBA "
  23293.  18h  8 BYTEs    always zero???
  23294.  20h    DWORD    -> built-in BIOS setup program entry point or 0000h:0000h
  23295. Note:    this record is located at F000h:E000h
  23296. SeeAlso: #0441,#0442
  23297.  
  23298. (Table 0445)
  23299. Values for Toshiba product ID:
  23300. model prodID   version      date       product number
  23301.  FEh    29h        ../..)..   Toshiba T1000LE
  23302.  FEh    2Ah        ../..*..   Toshiba T1000XE
  23303.  FEh    2Bh        ../..+..   Toshiba T1000SE
  23304.  FEh    2Ch        ../..,..   Toshiba T1000
  23305.  FEh    2Dh        ../..-..   Toshiba T1200F
  23306.  FEh    2Dh    V4.00    12/26-87   Toshiba T1200H
  23307.  FEh    2Eh        ../.....   Toshiba T1100+
  23308.  FCh    22h        ../.."..   Toshiba T8500
  23309.  FCh    26h        01/15&88   Toshiba T5200
  23310.  FCh    27h        ../..'..   Toshiba T5100
  23311.  FCh    28h        ../..(..   Toshiba T2000
  23312.  FCh    2Ah        12/26*89   Toshiba T1200XE
  23313.  FCh    2Bh        ../..+..   Toshiba T1600
  23314.  FCh    2Ch        ../..,..   Toshiba T3100e
  23315.  FCh    2Dh        ../..-..   Toshiba T3200
  23316.  FCh    2Fh        ../../..   Toshiba T3100
  23317.  FCh    34h    V1.50    02/04494   Toshiba T100X
  23318.  FCh    38h        ../..8..   Toshiba T2000SXe
  23319.  FCh    39h    V1.20    09/16991   Toshiba T2200SX
  23320.  FCh    39h    V1.40    10/01992   Toshiba T2200SX
  23321.  FCh    3Ch    V1.50    01/28<91   Toshiba T2000SX
  23322.  FCh    3Dh        ../..=..   Toshiba T3200SXC
  23323.  FCh    3Eh        ../..>..   Toshiba T3100SX
  23324.  FCh    3Fh        ../..?..   Toshiba T3200SX
  23325.  FCh    40h        ../..@..   Toshiba T4500C
  23326.  FCh    41h    V1.20    04/05A92   Toshiba T4500     ("T4500SXC" ???)
  23327.  FCh    45h    V3.20    04/14E92   Toshiba T4400SX   ("C" or "SXC" on cover)
  23328.  FCh    45h        01/13E93   Toshiba T4400SXC
  23329.  FCh    46h *        ../..F..   Toshiba T6400
  23330.  FCh    46h *        ../..F..   Toshiba T6400C
  23331.  FCh    5Fh    V1.40    01/18_94   Toshiba T3300SL
  23332.  FCh    69h        ../..i..   Toshiba T1900C    ("T1900CT" ???)
  23333.  FCh    6Ah    V1.30    05/19j93   Toshiba T1900     ("T1900S" ???)
  23334.  FCh    6Dh    V1.10    12/25m92   Toshiba T1850C
  23335.  FCh    6Eh    V1.00    08/19n92   Toshiba T1850
  23336.  FCh    6Eh    V1.10    12/25n92   Toshiba T1850
  23337.  FCh    6Fh    V1.00    07/17o92   Toshiba T1800
  23338.  FCh    6Fh    V1.10    12/25o92   Toshiba T1800
  23339.  FCh    7Eh    V1.30    06/17~93   Toshiba T4600C
  23340.  FCh    7Fh    V1.40    11/10x94   Toshiba T4600
  23341.  FCh    8Ah    V1.30    10/22x93   Toshiba T6600C
  23342.  FCh    91h    V1.20    07/15x94   Toshiba T2400CT
  23343.  FCh    91h    V5.00    07/28x95   Toshiba T2400CS/CT
  23344.  FCh    92h    V5.00    07/28x95   Toshiba T3600CT
  23345.  FCh    96h *    V1.40    12/08x94   Toshiba T200
  23346.  FCh    96h *    V1.50    12/08x94   Toshiba T200CS    (T200)
  23347.  FCh    97h        ../..x..   Toshiba T4800CT
  23348.  FCh    98h *    V1.10    12/22x93   Toshiba T1910
  23349.  FCh    98h *    V2.40    07/12x94   Toshiba T1910/CS    (T19XX)
  23350.  FCh    99h        ../..x..   Toshiba T4700CS
  23351.  FCh    9Bh    V2.30    01/31x94   Toshiba T4700CT
  23352.  FCh    9Bh    V2.50    03/22x94   Toshiba T4700CT
  23353.  FCh    9Bh    V5.00    07/28x95   Toshiba T4700CT
  23354.  FCh    9Ch    V1.30    01/11x94   Toshiba T1950CT
  23355.  FCh    9Ch    V2.50    07/22x94   Toshiba T1950CT    (T19XX)
  23356.  FCh    9Dh *    V2.40    07/12x94   Toshiba T1950/CS    (T19XX)
  23357.  FCh    9Eh *    V1.20    12/25x93   Toshiba T3400
  23358.  FCh    9Eh *    V1.30    03/22x94   Toshiba T3400/CT
  23359.  FCh    B5h **    V5.10    08/25x95   Toshiba T2110/CS    (T21XX)
  23360.  FCh    B5h    V5.10    08/25x95   Toshiba T2130CS/CT    (T21XX)
  23361.  FCh    BAh    V1.30    02/16x95   Toshiba T2150CDS/CDT
  23362.  FCh    BAh    V5.00    07/27x95   Toshiba T2150CDS/CDT (T2150)
  23363.  FCh    BBh **    V1.30    01/25x95   Toshiba T2100/CS/CT
  23364.  FCh    BBh **    V5.00    07/27x95   Toshiba T2100/CS/CT
  23365.  FCh    BCh    V1.20    12/05x94   Toshiba T2450CT
  23366.  FCh    BCh    V5.00    07/28x95   Toshiba T2450CT
  23367.  FCh    BEh    V5.00    07/28x95   Toshiba T4850CT
  23368.  FCh    C0h    V5.20    05/30x96   Toshiba 420CDS/CDT
  23369.  FCh    C1h    V5.20    03/27x96   Toshiba 100CS
  23370.  FCh    C3h    V5.60    07/19x96   Toshiba 710CDT / 720CDT
  23371.  FCh    C6h    V5.30    11/30x95   Toshiba 410CS/CDT
  23372.  FCh    CAh    V5.10    08/18x95   Toshiba 400CS/CDT
  23373.  FCh    CAh    V5.40    12/18x95   Toshiba 400CS/CDT
  23374.  FCh    CBh    V5.10    09/01x95   Toshiba 610CT
  23375.  FCh    CCh    V5.50    06/13x96   Toshiba 700CS/CT
  23376.  FCh    CFh    V5.00    08/07x95   Toshiba T4900CT
  23377.  FCh    DCh    V5.10    06/17x96   Toshiba 650CT
  23378.  FCh    DCh    V5.10    05/10x96   Toshiba 110CS/CT
  23379.  FCh    DDh    V5.10    05/10x96   Toshiba 110CS/CT
  23380.  FCh    DFh    V5.20    05/27x96   Toshiba 500CS/CDT
  23381.  FCh    ???    V5.???    ../..x..   Toshiba 620CT
  23382.  FCh    ???    V5.???    ../..x..   Toshiba 660CDT
  23383.  FCh    ???    V5.30    11/22/96   Toshiba 730CDT
  23384.  FCh    ???    V6.00    09/20/96   Toshiba 200CDS/CDT
  23385.  FCh    ???    V6.20    11/14/96   Toshiba 430CDS/CDT
  23386.  FCh    ???    V6.40    12/05/96   Toshiba 510CS/CDT
  23387. Notes:    the 8-bit ASCII graphics character in the "date" column above
  23388.       has been substituted by "x" if larger than 80h
  23389.     BIOS version numbers and dates may vary, esp. due to harddisk and
  23390.       (flash) BIOS upgrades; all BIOS versions 5.xx are flash updates
  23391.       for Windows95, the product number may indicate the series only
  23392.       (T21XX) or does no longer contain the exact type suffix (CS/CT)
  23393.     the most recent versions of the BIOS have stopped including the
  23394.       product ID code in the BIOS date
  23395.     [*] These models have monochrome and color versions which can be
  23396.       distinguished with INT 42/AX=7503h (WD90C24 chipset)
  23397.     [**] These models have monochrome and color versions which can be
  23398.       distinguished with INT 10/AX=5F50h (CT655xx chipset)
  23399.     models not found here like T21x5 are variants differing only in
  23400.       bundled software
  23401. SeeAlso: #0439
  23402. --------B-15C1-------------------------------
  23403. INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
  23404.     AH = C1h
  23405. Return: CF set on error
  23406.     CF clear if successful
  23407.         ES = segment of data area (see #M001,#M004,#M005)
  23408. SeeAlso: AH=04h"ABIOS",MEM 0040h:000Eh"DATA"
  23409. --------M-15C200-----------------------------
  23410. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
  23411.     AX = C200h
  23412.     BH = new state
  23413.         00h disabled
  23414.         01h enabled
  23415. Return: CF set on error
  23416.     AH = status (see #0446)
  23417. Note:    IBM classifies this function as required
  23418. SeeAlso: AX=C201h,AX=C207h,AX=C208h
  23419.  
  23420. (Table 0446)
  23421. Values for pointing device function status:
  23422.  00h    successful
  23423.  01h    invalid function
  23424.  02h    invalid input
  23425.  03h    interface error
  23426.  04h    need to resend
  23427.  05h    no device handler installed
  23428. --------M-15C201-----------------------------
  23429. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
  23430.     AX = C201h
  23431. Return: CF set on error
  23432.         AH = status (see #0446)
  23433.     CF clear if successful
  23434.         BH = device ID
  23435.         BL = value returned by attached device after reset
  23436.         AAh if device is a mouse
  23437. Notes:    after successful completion of this call, the pointing device is set
  23438.       as follows: disabled, sample rate 100 Hz, resolution 4 counts/mm,
  23439.       scaling 1:1, unchanged data package size
  23440.     IBM classifies this function as required
  23441. SeeAlso: INT 33/AX=0000h,AX=C200h,AX=C207h
  23442. --------M-15C202-----------------------------
  23443. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
  23444.     AX = C202h
  23445.     BH = sampling rate
  23446.         00h 10/second
  23447.         01h 20/second
  23448.         02h 40/second
  23449.         03h 60/second
  23450.         04h 80/second
  23451.         05h 100/second
  23452.         06h 200/second
  23453. Return: CF set on error
  23454.         AH = status (see #0446)
  23455. SeeAlso: INT 33/AX=001Ch
  23456. --------M-15C203-----------------------------
  23457. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
  23458.     AX = C203h
  23459.     BH = resolution (see #0447)
  23460. Return: CF set on error
  23461.         AH = status (see #0446)
  23462.  
  23463. (Table 0447)
  23464. Values for pointing device resolution:
  23465.  00h    one count per mm
  23466.  01h    two counts per mm
  23467.  02h    four counts per mm
  23468.  03h    eight counts per mm
  23469. --------M-15C204-----------------------------
  23470. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
  23471.     AX = C204h
  23472. Return: CF set on error
  23473.         AH = status (see #0446)
  23474.     CF clear if successful
  23475.         BH = device ID
  23476. --------M-15C205-----------------------------
  23477. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
  23478.     AX = C205h
  23479.     BH = data package size (1 - 8 bytes)
  23480. Return: CF set on error
  23481.         AH = status (see #0446)
  23482. Note:    the pointing device is set as follows: disabled, 100 Hz sample rate,
  23483.       resolution 4 counts/mm, scaling 1:1
  23484. SeeAlso: AX=C201h
  23485. --------M-15C206-----------------------------
  23486. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - EXTENDED COMMANDS
  23487.     AX = C206h
  23488.     BH = subfunction
  23489.         00h return device status
  23490.         Return: BL = pointing device status (see #0448)
  23491.             CL = resolution (see #0447)
  23492.             DL = sample rate, reports per second
  23493.         01h set scaling at 1:1
  23494.         02h set scaling at 2:1
  23495. Return: CF set on error
  23496.         AH = status (see #0446)
  23497.  
  23498. Bitfields for pointing device status:
  23499. Bit(s)    Description    (Table 0448)
  23500.  0    right button pressed
  23501.  1    reserved
  23502.  2    left button pressed
  23503.  3    reserved
  23504.  4    0 if 1:1 scaling, 1 if 2:1 scaling
  23505.  5    device enabled
  23506.  6    0 if stream mode, 1 if remote mode
  23507.  7    reserved
  23508. --------M-15C207-----------------------------
  23509. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
  23510.     AX = C207h
  23511.     ES:BX -> FAR user device handler or 0000h:0000h to cancel
  23512. Return: CF set on error
  23513.         AH = status (see #0446)
  23514. Note:    when the subroutine is called, it is passed the following values on
  23515.       the stack; the handler should return with a FAR return without
  23516.       popping the stack:
  23517.         WORD 1: status (see #0449)
  23518.         WORD 2: X data (high byte = 00h)
  23519.         WORD 3: Y data (high byte = 00h)
  23520.         WORD 4: 0000h
  23521. SeeAlso: INT 33/AX=000Ch
  23522.  
  23523. Bitfields for pointing device status:
  23524. Bit(s)    Description    (Table 0449)
  23525.  15-8    reserved (0)
  23526.  7    Y data overflowed
  23527.  6    X data overflowed
  23528.  5    Y data is negative
  23529.  4    X data is negative
  23530.  3    reserved (1)
  23531.  2    reserved (0)
  23532.  1    right button pressed
  23533.  0    left button pressed
  23534. --------M-15C208-----------------------------
  23535. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE - WRITE TO POINTER PORT
  23536.     AX = C208h
  23537.     BL = byte to be sent to the pointing device
  23538. Note:    IBM classifies this function as optional
  23539. SeeAlso: AX=C200h,AX=C209h
  23540. --------M-15C209-----------------------------
  23541. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE - READ FROM POINTER PORT
  23542.     AX = C209h
  23543. Return: BL = first byte read from pointing device
  23544.     CL = second byte read
  23545.     DL = third byte read
  23546. Note:    IBM classifies this function as optional
  23547. SeeAlso: AX=C200h,AX=C208h
  23548. --------M-15C2-------------------------------
  23549. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  23550.     AH = C2h
  23551.     AL = 10h-23h
  23552. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  23553. --------B-15C3------------------------------
  23554. INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
  23555.     AH = C3h
  23556.     AL = function
  23557.         00h disable PS/2 watchdog timer
  23558.         01h enable PS/2 watchdog timer
  23559.         BX = timer counter (0001h-00FFh)
  23560.         02h disable Gearbox system
  23561.         03h enable Gearbox system
  23562. Return: CF set on error
  23563.     CF clear if successful
  23564. Note:    the watchdog timer generates an NMI
  23565. SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR"
  23566. --------B-15C4-------------------------------
  23567. INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
  23568.     AH = C4h
  23569.     AL = subfunction
  23570.         00h return base POS register address
  23571.         01h enable selected slot for setup
  23572.         BL = slot number (1 to 8)
  23573.         02h disable setup for all slots (enable adapter)
  23574. Return: CF set on error
  23575.     DX = base POS register address (if subfunction 00h)
  23576. SeeAlso: AH=C6h
  23577. --------B-15C5-------------------------------
  23578. INT 15 UC - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95)
  23579.     AH = C5h
  23580.     AL = interrupt being invoked
  23581.         01h INT 19
  23582.         02h INT 14
  23583.         03h INT 16
  23584.         04h INT 40 (floppy INT 13)
  23585.         05h INT 17
  23586.         06h INT 10
  23587.         07h INT 12
  23588.         08h INT 11
  23589.         09h INT 1A
  23590. Return: all registers except AX must be preserved
  23591. Notes:    called as the very first action of the indicated ROM BIOS interrupt
  23592.       handlers on the PS/2 Models 30/286, 50Z, and 95
  23593.     default handler does nothing and returns CF clear for the above
  23594.       subfunctions, CF set and AH=86h for all other subfunctions
  23595.     value of AX passed to the original interrupt handler is pushed on
  23596.       stack immediately prior to call
  23597. --------B-15C6-------------------------------
  23598. INT 15 U - later PS/2 models - GET POS DATA
  23599.     AH = C6h
  23600.     ???
  23601. Return: ???
  23602. Notes:    this function is referenced by name and number in some IBM BIOS manuals
  23603.     IBM reports that "there are a number of problems with this call" and
  23604.       does not recommend its use.
  23605. SeeAlso: AH=C4h
  23606. --------B-15C7-------------------------------
  23607. INT 15 - SYSTEM - later PS/2s - RETURN MEMORY-MAP INFORMATION
  23608.     AH = C7h
  23609.     DS:SI -> user supplied memory map table (see #0450)
  23610. Notes:    call AH=C0h and examine bit 4 of feature byte 2 to check if this
  23611.       function is supported
  23612.     IBM classifies this function as optional
  23613. Return: CF set on error, clear if successful
  23614. SeeAlso: AH=C0h,AH=C9h,AH=D1h,AX=E820h
  23615.  
  23616. Format of memory-map table structure:
  23617. Offset    Size    Description    (Table 0450)
  23618.  00h    WORD    length of table (excluding this word)
  23619.  02h    DWORD    local memory between 1M and 16M, in 1K blocks
  23620.  06h    DWORD    local memory between 16M and 4G, in 1K blocks
  23621.  0Ah    DWORD    system memory between 1M and 16M, in 1K blocks
  23622.  0Eh    DWORD    system memory between 16M and 4G, in 1K blocks
  23623.  12h    DWORD    cacheable memory between 1M and 16M, in 1K blocks
  23624.  16h    DWORD    cacheable memory between 16M and 4G, in 1K blocks
  23625.  1Ah    DWORD    1K blocks before start of non-system memory between 1M and 16M
  23626.  1Eh    DWORD    1K blocks before start of non-system memory between 16M and 4G
  23627.  22h    WORD    start segment of largest free block from C0000h-DFFFFh
  23628.  24h    WORD    size of largest free block
  23629.  26h    DWORD    reserved
  23630. --------B-15C8-------------------------------
  23631. INT 15 - SYSTEM - ENABLE/DISABLE PROCESSOR FUNCTIONS
  23632.     AH = C8h
  23633.     AL = function
  23634.         00h disable L1 cache
  23635.         01h enable L1 cache
  23636.         ---models 90 and 95 only---
  23637.         02h disable L2 cache
  23638.         03h enable L2 cache
  23639.         04h disable both caches
  23640.         05h enable both caches
  23641.         06h return status of both caches
  23642.         07h-FFh Reserved
  23643. Return: CF set on error
  23644.     CF clear if successful
  23645.     AH = status (see #0451)
  23646.     For subfunction 06h only:
  23647.         BL = status of L1 cache
  23648.         00h enabled
  23649.         01h disabled or not installed
  23650.         02h disabled due to test error (can not be enabled)
  23651.         BH = status of L2 cache (same codes as BL)
  23652. Notes:     supported by at least PS/2 70, 70/486, 80-A21, 90, 95
  23653.     call AH=C0h and examine bit 3 of feature byte 2 to check if this
  23654.       function is supported.
  23655.     on a 486 system, any external caches must be disabled when the
  23656.       on-chip cache (L1) is disabled.
  23657. SeeAlso: AH=C0h
  23658.  
  23659. (Table 0451)
  23660. Values for status:
  23661.  00h    operation successful
  23662.  01h    function choice (in AL) is invalid
  23663.  02h    NVRAM data is invalid
  23664.  03h    cache test error
  23665.  04h    (90 and 95 only) cannot perform operation requested due to state of
  23666.       other cache (also see note above)
  23667.  05h    no L2 cache is present
  23668.  07h    invalid input values
  23669.  09h    CPU in protected mode
  23670. --------B-15C9-------------------------------
  23671. INT 15 - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION
  23672.     AH = C9h
  23673.     AL = 10h (may be required on some non-PS BIOSes)
  23674. Return: CF clear if successful
  23675.         AH = 00h
  23676.         CH = CPU type (see #0452)
  23677.         CL = mask revision (stepping level) (see #0453)
  23678.     CF set on error
  23679.         AH = status (80h,86h = function not supported)
  23680. Notes:    the BIOS must save DX at startup in order to be able to support this
  23681.       call; PS/2 Models 56, 57, 90, and 95 are known to support it
  23682.     the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev)
  23683.     IBM classifies this function as optional
  23684. SeeAlso: AX=D100h,AX=DA92h,MEM 0040h:00BCh
  23685.  
  23686. (Table 0452)
  23687. Values for CPU type:
  23688.  03h    80386DX or clone
  23689.  04h    80486
  23690.  05h    Pentium
  23691.  23h    80386SX or clone
  23692.  33h    Intel i376
  23693.  43h    80386SL or clone
  23694.  A3h    IBM 386SLC
  23695.  A4h    IBM 486SLC
  23696.  
  23697. (Table 0453)
  23698. Values for stepping level:
  23699. ---i376 (type code 33h)---
  23700.  05h    A0
  23701.  08h    B
  23702. ---80386/80386DX (type code 03h)---
  23703.  03h    Intel B1 to B10, Am386DX/DXL step A
  23704.  05h    Intel D0
  23705.  08h    Intel D1/D2/E1, Am386DX/DXL step B
  23706. ---80386SL (type code 43h)---
  23707.  05h    A
  23708.  1xh    B
  23709. ---80386SX (type code 23h)---
  23710.  04h    Intel A0
  23711.  05h    Intel B, Am386SX/SXL step A1
  23712.  08h    Intel C/D1, Am386SX/SXL step B
  23713.  09h    Intel 386CX/386EX/386SXstatic step A
  23714. ---80486DX (type code 04h)---
  23715.  00h    Intel A0/A1
  23716.  01h    Intel B2 to B6
  23717.  02h    Intel C0
  23718.  03h    Intel C1
  23719.  04h    Intel D0
  23720.  10h    Intel cA2/cA3, Cx486SLC step A
  23721.  11h    Intel cB0/cB1
  23722. ---486DX2 (type code 04h)---
  23723.  02h    Am486DX2 (unknown stepping)
  23724.  32h    Intel DX2/Overdrive steps A0 to A2
  23725.  33h    Intel DX2/Overdrive step B1
  23726. ---486SX (type code 04h)---
  23727.  20h    Intel A0
  23728.  22h    Intel B0
  23729.  27h    Intel cA0
  23730.  28h    Intel cB0
  23731. ---486SL (type code 04h)---
  23732.  40h    Intel A
  23733. ---IntelSX2 (type code 04h)---
  23734.  5xh    Intel A
  23735. ---IntelDX4 (type code 04h)---
  23736.  8xh    Intel A
  23737. ---487SX (type code 04h)---
  23738.  20h    Intel A0
  23739.  21h    Intel B0
  23740. ---Pentium (type code 05h)---
  23741.  0xh    Intel P5 steps Ax (1993)
  23742.  1xh    Intel P5 steps Bx (1994)
  23743.  2xh    Intel P54C step A
  23744. ---RapidCAD (type code 03h)---
  23745.  40h    A
  23746. --------B-15CA-------------------------------
  23747. INT 15 U - PS/2 Model 95 - READ/WRITE CMOS MEMORY
  23748.     AH = CAh
  23749.     AL = function
  23750.         00h read CMOS
  23751.         Return: CL = value of CMOS location
  23752.         01h write CMOS
  23753.         CL = new value for CMOS location
  23754.     BL = CMOS location (0Eh-3Fh)
  23755. Return: CF clear if successful
  23756.         AH = 00h
  23757.     CF set on error
  23758.         AH = error code (see #0454)
  23759. Note:    writes do not update the CMOS checksum
  23760.  
  23761. (Table 0454)
  23762. Values for CMOS read/write error code:
  23763.  01h    CMOS lost power or has invalid checksum
  23764.  03h    specified location out of range (too high)
  23765.  04h    specified location out of range (too low)
  23766.  80h    unsupported function (PC)
  23767.  86h    unsupported function (XT)
  23768. --------B-15CB-------------------------------
  23769. INT 15 U - PS/2 Model 95 - RESERVED
  23770.     AH = CBh
  23771.     ???
  23772. Return: ???
  23773. --------B-15CC-------------------------------
  23774. INT 15 U - PS/2 Model 95 - RESERVED
  23775.     AH = CCh
  23776.     ???
  23777. Return: ???
  23778. --------V-15CCCC-----------------------------
  23779. INT 15 U - Toshiba laptops - VCHAD.EXE - INSTALLATION CHECK
  23780.     AX = CCCCh
  23781. Return: AX = ABCDh if installed
  23782. Note:    supported by Toshiba VGA change display utility VCHAD.EXE ver 2.90+
  23783.       older versions have the string "VCHAD" 2 bytes after the address of
  23784.       the INT 15 handler which is hooked by all versions for the SysReq key
  23785. SeeAlso: AH=85h
  23786. --------B-15CD-------------------------------
  23787. INT 15 U - PS/2 Model 95 - RESERVED
  23788.     AH = CDh
  23789.     ???
  23790. Return: ???
  23791. --------B-15CE--BL00-------------------------
  23792. INT 15 - later PS/2s - ALLOCATE DMA ARBITRATION LEVEL
  23793.     AH = CEh
  23794.     BL = 00h-0Eh arbitration level to be allocated
  23795.          0Fh-FFh reserved
  23796.     AL = option byte
  23797.         bit 7-1: reserved (0)
  23798.         bit 0: 0 = need DMA channel for arbitration level requested
  23799.            1 = no channel required for arbitration level
  23800. Return: CF set on error
  23801.         AH = status (80h,86h = function not supported)
  23802.     CF clear on success
  23803.         AL = channel number
  23804.         00h-07h channel number allocated for the arbiration level
  23805.         08h-FEh reserved
  23806.         FFh    no channel requested for arbitration level
  23807.         AH = status (see #0455)
  23808. Notes:     arbitration level 00h has the highest priority, 0Eh the lowest
  23809.      to perform a DMA transfer operation, be sure to call this function
  23810.        first, and call AH=CFh afterward.  Failure to use this function
  23811.        can cause unpredictable results.
  23812. SeeAlso: AH=CFh
  23813.  
  23814. (Table 0455)
  23815. Values for DMA arbitration status:
  23816.  00h    success
  23817.  01h    arbitration level not available
  23818.  02h    channel not available
  23819.  03h    invalid arbitration level passed
  23820. --------B-15CF-------------------------------
  23821. INT 15 - later PS/2s - DEALLOCATE DMA ARBITRATION LEVEL
  23822.     AH = CFh
  23823.     BL = arbitration level to be deallocated (see AH=CEh)
  23824. Return: CF set on error
  23825.         AH = status (80h,86h = function not supported)
  23826.     CF clear on success
  23827.         AH = status
  23828.         00h success
  23829.         04h arbitration level not allocated
  23830. SeeAlso: AH=CEh
  23831. --------B-15D0-------------------------------
  23832. INT 15 - later PS/2s - RESERVED
  23833.     AH = D0h
  23834.     ???
  23835. Return: ???
  23836. ----------15D042BL00-------------------------
  23837. INT 15 R - Intel Pentium Pro BIOS UPDATE - INSTALLATION CHECK
  23838.     AX = D042h
  23839.     BL = 00h
  23840. Return: CF clear if successful
  23841.     CF set on error
  23842.     AH = status
  23843.         00h successful
  23844.         EBX:ECX = signature "INTELPEP"
  23845.         EDX = BIOS update loader version
  23846.         SI = number of 2K update blocks which can be recorded in NVRAM
  23847.         86h not implemented
  23848.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  23849.         00h successful
  23850. Program: the Pentium Pro BIOS update allows the system BIOS or other software
  23851.       to install a microcode patch into the Pentium Pro processor
  23852. Notes:    this API must be called from actual real mode, not V86 mode
  23853.     at least 32K stack space must be available when this function is called
  23854. SeeAlso: AX=D042h/BL=01h,AX=D042h/BL=02h,AX=D042h/BL=03h
  23855. SeeAlso: @xxxxh:xxxxh"Intel BIOS Upgrade",MSR 00000079h
  23856. ----------15D042BL01-------------------------
  23857. INT 15 R - Intel Pentium Pro BIOS UPDATE - WRITE BIOS UPDATE AREA
  23858.     AX = D042h
  23859.     BL = 01h
  23860.     ES:DI -> microcode update block (see #0457)
  23861.     CX,DX,SI = segments of three 64K scratchpad areas for BIOS use
  23862. Return: CF clear if successful
  23863.     CF set on error
  23864.     AH = status (see #0456)
  23865.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  23866.         00h successful
  23867. Notes:    a microcode update may also be initiated by a WRMSR instruction
  23868.       with ECX=0079h, EDX=00000000h, and EAX=linear address of update
  23869.       block (see #0457)
  23870.     at least 32K stack space must be available when this function is called
  23871. SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h,MSR 00000079h
  23872.  
  23873. (Table 0456)
  23874. Values for Pentium Pro BIOS update status:
  23875.  00h    successful
  23876.  86h    not implemented
  23877.  90h    unable to erase NVRAM device
  23878.  91h    unable to write to NVRAM device
  23879.  92h    unable to read storage
  23880.  93h    NVRAM is full
  23881.  94h    specified processor stepping is not present in system
  23882.  95h    invalid header or loader version
  23883.  96h    wrong checksum in header
  23884.  97h    processor rejected the update
  23885.  98h    the same or a more recent update is already stored
  23886.  99h    update block number was out of range
  23887.  
  23888. Format of Pentium Pro microcode update block:
  23889. Offset    Size    Description    (Table 0457)
  23890.  00h    DWORD    update header version number (currently 00000001h)
  23891.         FFFFFFFFh = unused block
  23892.  04h    DWORD    revision number of this microcode update
  23893.  08h    DWORD    update creation date, as BCD mmddyyyy (month,day,year)
  23894.  0Ch    DWORD    family/model/stepping of processor to which update applied
  23895.         (same value as returned by CPUID instruction)
  23896.  10h    DWORD    checksum (used to force sum of all 512 DWORDs of the update
  23897.         block to 00000000h)
  23898.  14h    DWORD    revision number of loader needed to install update
  23899.         (currently 00000001h)
  23900.  18h 24 BYTEs    reserved for future expansion
  23901.  30h 2000 BYTEs    encrypted microcode data
  23902. SeeAlso: MSR 00000079h,OPCODE "CPUID"
  23903. ----------15D042BL02-------------------------
  23904. INT 15 R - Intel Pentium Pro BIOS UPDATE - BIOS UPDATE CONTROL
  23905.     AX = D042h
  23906.     BL = 02h
  23907.     BH = function
  23908.         01h enable update loading at initialization time
  23909.         02h check whether update loading is enabled
  23910.     CX,DX,SI = segments of three 64K scratchpad areas for BIOS use
  23911. Return: CF clear if successful
  23912.     CF set on error
  23913.     AH = status (see #0456)
  23914.         00h successful
  23915.         BL = enabled/disabled flag
  23916.         86h not implemented
  23917.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  23918.         00h successful
  23919. Notes:    this API must be called from actual real mode, not V86 mode
  23920.     at least 32K stack space must be available when this function is called
  23921.     there is no call to disable update loading due to security risks; the
  23922.       BIOS setup can disable loading
  23923. SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h
  23924. ----------15D042BL03-------------------------
  23925. INT 15 R - Intel Pentium Pro BIOS UPDATE - READ BIOS UPDATE AREA
  23926.     AX = D042h
  23927.     BL = 03h
  23928.     ES:DI -> buffer for microcode update block (see #0457)
  23929.     ECX = two real-mode 64K scratchpad segments (upper and lower words)
  23930.     DX = segment of 64K scratchpad area for BIOS use
  23931.     SI = zero-based index number of update block to retrieve
  23932. Return: CF clear if successful
  23933.     CF set on error
  23934.     AH = status
  23935.         00h successful
  23936.         ES:DI buffer filled with 2048-byte update block
  23937.         86h not implemented
  23938.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  23939.         00h successful
  23940. Program: the Pentium Pro BIOS update allows the system BIOS or other software
  23941.       to install a microcode patch into the Pentium Pro processor
  23942. Notes:    this API must be called from actual real mode, not V86 mode
  23943.     at least 32K stack space must be available when this function is called
  23944. SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=01h,AX=D042h/BL=03h
  23945. --------B-15D100DX0000-----------------------
  23946. INT 15 - later PS/2s - GET NUMBER OF DEVICE DESCRIPTOR TABLE (DDT) ENTRIES
  23947.     AX = D100h
  23948.     DX = 0000h (reserved, must set to 0)
  23949. Return: BL = size of one DDT entry, in bytes
  23950.     CX = number of DDT entries
  23951.     AH = return code (see #0458)
  23952.     CF set on error
  23953.     CF clear on success
  23954. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D101h,AX=D102h,AX=D103h,AX=D104h
  23955.  
  23956. (Table 0458)
  23957. Values for return code:
  23958.  00h    success
  23959.  01h    requested DDT entry not found
  23960.  02h    DDT data not valid
  23961.  86h    function not supported
  23962. --------B-15D101-----------------------------
  23963. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY NUMBER
  23964.     AX = D101h
  23965.     BX = number of requested entry (starting with 1)
  23966.     DX = 0000h (reserved, must be set to 0)
  23967.     ES:DI -> buffer to contain DDT entry (see #0459)
  23968. Return: AH = return code (see #0458)
  23969.     CF set on error
  23970.     CF clear on success
  23971.         ES:DI buffer filled with DDT entry
  23972. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D102h,AX=D104h
  23973.  
  23974. Format of Device Descriptor Table (DDT):
  23975. Offset    Size    Description    (Table 0459)
  23976.  00h    BYTE    bits 7-4: reserved (set to 0)
  23977.         bits 3-0: slot of device (0 = system board)
  23978.  01h    BYTE    bits 7-4: second interrupt for this device (0 = none)
  23979.         bits 3-0: first interrupt for this device (0 = none)
  23980.  02h    BYTE    bits 7-4: second arbitration level for this device
  23981.         bits 3-0: first arbitration level for this device
  23982.  03h    WORD    DDT indicators (see #0460)
  23983.  05h    BYTE    reserved (0)
  23984.  06h    WORD    device ID (0 = none)
  23985.  08h    WORD    starting address of first  I/O block (0 = none)
  23986.  0Ah    WORD    starting address of second I/O block (0 = none)
  23987.  OCh    WORD    starting address of third  I/O block (0 = none)
  23988.  OEh    DWORD    start of first non-system memory block (0 = none)
  23989.  12h    WORD    size of first non-system memory block (in kilobytes)
  23990.  14h    DWORD    start of second non-system memory block (0 = none)
  23991.  18h    WORD    size of second non-system memory block (in kilobytes)
  23992.  1Ah    BYTE    implementation identifier of the device
  23993.  1Bh    BYTE    implementation revision level of the device
  23994. Note:    I/O block addresses and non-system memory addresses are listed in
  23995.       ascending order in each DDT entry.
  23996.  
  23997. Bitfields for DDT indicators:
  23998. Bit(s)    Description    (Table 0460)
  23999.  15    reserved (0)
  24000.  14    second arbitration level exists
  24001.  13    first arbitration level exists
  24002.  12    serial interface is RS-422
  24003.  11    not address limited
  24004.  10    DMA channel used
  24005.  9    second arbitration level can be shared
  24006.  8    first arbitration level can be shared
  24007.  7-0    reserved (0)
  24008. --------B-15D102-----------------------------
  24009. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY I/O ADDRSS
  24010.     AX = D102h
  24011.     BX = entry number at which to start searching
  24012.     CX = requested I/O port address
  24013.     DX = 0000h (reserved, must be set to 0)
  24014.     ES:DI -> buffer to contain DDT entry (see #0459)
  24015. Return: AH = return code (see #0458)
  24016.     BX = DDT entry number where I/O port was found, or total entries
  24017.          plus 1 if port was not found.
  24018.     CF set on error
  24019.     CF clear on success
  24020.         ES:DI buffer filled with DDT entry
  24021. Desc:    the DDT is searched from the specified entry for the I/O port in CX,
  24022.       and the first entry in which it is found is returned
  24023. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h,AX=D104h
  24024. --------B-15D103DX0000-----------------------
  24025. INT 15 - later PS/2s - RETURN ENTIRE DDT
  24026.     AX = D103h
  24027.     DX = 0000h (reserved, must be set to 0)
  24028.     ES:DI -> buffer to contain DDT entry (see #0459)
  24029. Return: AH = return code (see #0458)
  24030.     CF set on error
  24031.     CF clear on success
  24032.         ES:DI buffer filled with DDT entry
  24033. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D104h
  24034. --------B-15D104-----------------------------
  24035. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY DEVICE ID
  24036.     AX = D104h
  24037.     BX = entry number at which to start searching
  24038.     CX = requested device ID
  24039.     DX = 0000h (reserved, must be set to 0)
  24040.     ES:DI -> buffer to contain DDT entry (see #0459)
  24041. Return: AH = return code (see #0458)
  24042.     BX = DDT entry number where device ID was found, or total entries
  24043.           plus 1 if port was not found.
  24044.     CF set on error
  24045.     CF clear on success
  24046.         ES:DI buffer filled with DDT entry
  24047. Desc:    the DDT is searched from the specified entry for the device ID in CX,
  24048.       and the first entry in which it is found is returned.
  24049. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h
  24050. --------B-15D2-------------------------------
  24051. INT 15 - later PS/2s - RESERVED
  24052.     AH = D2h
  24053.     ???
  24054. Return: ???
  24055. --------B-15D3-------------------------------
  24056. INT 15 - later PS/2s - RESERVED
  24057.     AH = D3h
  24058.     ???
  24059. Return: ???
  24060. --------B-15D4-------------------------------
  24061. INT 15 - later PS/2s - GET PHYSICAL FIXED DISK DRIVE NUMBER (SELECTABLE BOOT)
  24062.     AH = D4h
  24063.     DL = logical fixed disk drive number
  24064. Return: AH = return code (see #0461)
  24065.     CF set on error
  24066.     CF clear on success
  24067.         AL = physical fixed disk drive number
  24068.  
  24069. (Table 0461)
  24070. Values for return code:
  24071.  00h    success
  24072.  01h    specified logical drive number is invalid
  24073.  80h    function not supported (on PCjr and PC)
  24074.  86h    function not supported
  24075. --------B-15D5-------------------------------
  24076. INT 15 - later PS/2s - RESERVED
  24077.     AH = D5h
  24078.     ???
  24079. Return: ???
  24080. --------B-15D600BL00-------------------------
  24081. INT 15 - later PS/2s - READ BOOT DEVICE ID
  24082.     AX = D600h
  24083.     BL = 00h
  24084.     DX = device ID
  24085. Return: CF clear if successful
  24086.         AH = 00h
  24087.     CF set on error
  24088.         AH = status (86h for function not supported)
  24089. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h,AX=D602h
  24090. --------B-15D600BL01-------------------------
  24091. INT 15 - later PS/2s - WRITE BOOT DEVICE ID
  24092.     AX = D600h
  24093.     BL = 01h
  24094.     DX = device ID
  24095. Return: CF clear on success
  24096.         AH = 00h
  24097.     CF set on error
  24098.         AH = status (86h for function not supported)
  24099. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h
  24100. --------B-15D601BL00-------------------------
  24101. INT 15 - later PS/2s - READ BOOT DEVICE KEY
  24102.     AX = D601h
  24103.     BL = 00h
  24104.     DX = device ID
  24105. Return: CF clear on success
  24106.         AH = 00h
  24107.     CF set on error
  24108.         AH = status (86h for function not supported)
  24109. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h,AX=D602h
  24110. --------B-15D601BL01-------------------------
  24111. INT 15 - later PS/2s - WRITE BOOT DEVICE KEY
  24112.     AX = D601h
  24113.     BL = 01h
  24114.     DX = device ID
  24115. Return: CF clear on success
  24116.         AH = 00h
  24117.     CF set on error
  24118.         AH = status (86h for function not supported)
  24119. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h
  24120. --------B-15D602-----------------------------
  24121. INT 15 - later PS/2s - QUERY BOOT REFERENCE PARTITION
  24122.     AX = D602h
  24123. Return: CF clear on success
  24124.         AH = 00h
  24125.         AL = status of reference-partition boot request
  24126.         00h boot not requested
  24127.         01h boot requested
  24128.     CF set on error
  24129.         AH = status (86h for function not supported)
  24130. SeeAlso: AX=D601h/BL=00h
  24131. --------X-15D800-----------------------------
  24132. INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION
  24133.     AX = D800h
  24134.     CL = slot number (including embedded and virtual)
  24135. Return: CF clear if successful
  24136.         AH = 00h
  24137.     CF set on error
  24138.         AH = error code (80h,82h,83h,86h,87h)(see #0463)
  24139.     AL = bit flags (see #0462)
  24140.     BH = major revision level of configuration utility
  24141.     BL = minor revision level of configuration utility
  24142.     CX = checksum of configuration file
  24143.     DH = number of device functions
  24144.     DL = combined function information byte (see #0464)
  24145.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  24146. Note:    call with AL=80h if using 32-bit CS addressing mode instead of 16-bit
  24147. SeeAlso: AX=D801h,AX=D804h
  24148.  
  24149. Bitfields for EISA AL bit flags:
  24150. Bit(s)    Description    (Table 0462)
  24151.  7    set if duplicate IDs
  24152.  6    set if product ID readable
  24153.  4,5    slot type (00=expansion, 01=embedded, 10=virtual device)
  24154.  0-3    duplicate ID number if bit 7 set
  24155. SeeAlso: #0464
  24156.  
  24157. (Table 0463)
  24158. Values for EISA error code:
  24159.  80h    invalid slot number
  24160.  81h    invalid function number
  24161.  82h    EISA CMOS corrupt
  24162.  83h    empty slot
  24163.  84h    error clearing CMOS
  24164.  85h    EISA CMOS is full
  24165.  86h    invalid BIOS-FW function call
  24166.  87h    invalid system configuration
  24167.  88h    config utility version not supported
  24168.  
  24169. Bitfields for EISA combined function information byte:
  24170. Bit(s)    Description    (Table 0464)
  24171.  7    reserved
  24172.  6    slot has free-form data entries
  24173.  5    slot has port initialization entries
  24174.  4    slot has port-range entries
  24175.  3    slot has DMA entries
  24176.  2    slot has IRQ entries
  24177.  1    slot has memory entries
  24178.  0    slot has function type entries
  24179. SeeAlso: #0462
  24180. --------X-15D801-----------------------------
  24181. INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION
  24182.     AX = D801h
  24183.     CH = function number to read
  24184.     CL = slot number (including embedded and virtual)
  24185.     DS:SI -> 320-byte buffer for standard configuration data block
  24186. Return: CF clear if successful
  24187.         AH = 00h
  24188.         DS:SI buffer filled
  24189.     CF set on error
  24190.         AH = error code (80h-83h,86h,87h) (see #0463)
  24191.     BX destroyed
  24192. Note:    call with AL=81h if using 32-bit CS addressing mode instead of 16-bit
  24193. --------X-15D802-----------------------------
  24194. INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS)
  24195.     AX = D802h
  24196.     BH = EISA config utility major revision level
  24197.     BL = EISA config utility minor revision level
  24198. Return: CF clear if successful
  24199.         AH = 00h
  24200.     CF set on error
  24201.         AH = error code (84h,86h,88h) (see #0463)
  24202. Note:    call with AL=82h if using 32-bit CS addressing mode instead of 16-bit
  24203. SeeAlso: AX=D803h
  24204. --------X-15D803-----------------------------
  24205. INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY
  24206.     AX = D803h
  24207.     CX = length of data structure (0000h = empty slot)
  24208.         includes two bytes for config file checksum
  24209.     DS:SI -> configuration data
  24210. Return: CF clear if successful
  24211.         AH = 00h
  24212.     CF set on error
  24213.         AH = error code (84h-86h) (see #0463)
  24214. Note:    call with AL=83h if using 32-bit CS addressing mode instead of 16-bit
  24215. SeeAlso: AX=D802h
  24216. --------X-15D804-----------------------------
  24217. INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT
  24218.     AX = D804h
  24219.     CL = slot number (including embedded and virtual)
  24220. Return: CF clear if successful
  24221.         AH = 00h
  24222.     CF set on error
  24223.         AH = error code (80h,83h,86h) (see #0463)
  24224.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  24225. Note:    call with AL=84h if using 32-bit CS addressing mode instead of 16-bit
  24226. SeeAlso: AX=D800h
  24227. --------b-15D820-----------------------------
  24228. INT 15 - Compaq LTE Lite - GET ???
  24229.     AX = D820h
  24230.     DS:SI -> 17-byte buffer for ???
  24231. Return: DS:SI buffer filled (first byte is length of remaining data, unless
  24232.       it is greater than 10h, in which case the second byte is 00h and no
  24233.       other data is returned)
  24234. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  24235.       486/486c/486cx and recent DESKPRO/i ROMs
  24236. SeeAlso: AX=D821h
  24237. --------b-15D821-----------------------------
  24238. INT 15 - Compaq LTE Lite - SET ???
  24239.     AX = D821h
  24240.     DS:SI -> counted string (should not be more than 16 bytes)
  24241. Return: AH = 00h
  24242. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  24243.       486/486c/486cx and recent DESKPRO/i ROMs
  24244. SeeAlso: AX=D820h
  24245. --------b-15D822BL00-------------------------
  24246. INT 15 - Compaq EISA System ROM 04/08/93 - GET ???
  24247.     AX = D822h
  24248.     BL = 00h
  24249.     CX = size of buffer or 0000h to retrieve required buffer size
  24250.     DS:SI -> buffer for ??? (if CX nonzero)
  24251. Return: CF clear if successful
  24252.         AH = 00h
  24253.         DH = 08h
  24254.         CX = required buffer size to retrieve all data (if CX=0 on entry)
  24255.         DS:SI buffer filled (if CX nonzero on entry)
  24256.     CF set on error (BL nonzero)
  24257.         AH = 86h
  24258. --------b-15D823-----------------------------
  24259. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  24260.     AX = D823h
  24261.     BL = subfunction??? (00h or 80h)
  24262.     BH = ???
  24263.     DS:SI -> buffer for ??? (see #0465)
  24264. Return: CF clear if successful
  24265.         AH = 00h
  24266.         DH = 08h
  24267.         DL = ???
  24268.     CF set on error
  24269.         AH = error code
  24270.         86h BL neither 00h nor 80h
  24271.         87h ???
  24272.  
  24273. Format of Compaq EISA buffer:
  24274. Offset    Size    Description    (Table 0465)
  24275.  00h    BYTE    ???
  24276.  01h    WORD    ???
  24277.  03h    BYTE    ???
  24278.  04h    WORD    ???
  24279.  06h    WORD    ???
  24280.     ???
  24281. ----------15D824-----------------------------
  24282. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  24283.     AX = D824h
  24284.     CX = ???
  24285.     DS:SI -> ASCIZ string containing ???
  24286. Return: CF clear if successful
  24287.         AH = 00h
  24288.         CX = ???
  24289.     CF set on error
  24290.         AH = error code
  24291.         87h ??? failed
  24292.         88h ???
  24293. Note:    these functions are only available if ??? from keyboard controller
  24294.       command C0h
  24295. ----------15D825-----------------------------
  24296. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  24297.     AX = D825h
  24298.     CX = ???
  24299.     SI = ???
  24300.     DI = ???
  24301.     ???
  24302. Return: CF clear if successful
  24303.         AH = 00h
  24304.         CX = ???
  24305.     CF set on error
  24306.         AH = error code
  24307.         87h ??? failed
  24308.         88h ???
  24309.             CX = ???
  24310. Note:    these functions are only available if ??? from keyboard controller
  24311.       command C0h
  24312. ----------15D826-----------------------------
  24313. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  24314.     AX = D826h
  24315.     BX = ???
  24316.     CX = size of buffer in bytes
  24317.     DS:SI -> buffer for ???
  24318.     ???
  24319. Return: CF clear if successful
  24320.         AH = 00h
  24321.         CX = ???
  24322.     CF set on error
  24323.         AH = error code
  24324.         87h ??? failed
  24325.         88h ???
  24326. Note:    these functions are only available if ??? from keyboard controller
  24327.       command C0h
  24328. --------X-15D8-------------------------------
  24329. INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS
  24330.     AH = D8h
  24331.     AL = 80h to 84h
  24332.     other registers as appropriate for AL=00h to 04h
  24333. Return: as appropriate for AL=00h to 04h
  24334. Note:    these functions are identical to AX=D800h to D804h, except that they
  24335.       should be called when using 32-bit CS addressing mode (pointers use
  24336.       ESI rather than SI as offset) instead of 16-bit addressing mode
  24337. SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h
  24338. --------b-15D8-------------------------------
  24339. INT 15 - Compaq EISA System ROM 04/08/93 - 32-bit CS ADDRESSING MODE CALLS
  24340.     AH = D8h
  24341.     AL = A0h to A6h
  24342.     other registers as appropriate for AL=20h to 26h
  24343. Return: as appropriate for AL=20h to 26h
  24344. Note:    these functions are identical to AX=D820h to D826h, except that they
  24345.       should be called when using 32-bit CS addressing mode
  24346. ----------15DA-------------------------------
  24347. INT 15 U - AMI PCI BIOS v1.00.05.AX1 - ???
  24348.     AH = DAh
  24349.     AL = function (00h-08h,12h,14h,15h,19h,88h-8Eh,92h,99h)
  24350.     other registers vary by function
  24351. Return: CF clear if successful
  24352.         varies by function
  24353.     CF set on error
  24354.         AH = error code (86h unsupported [sub]function)
  24355. Note:    functions not listed above always return CF set and AH=86h; in the
  24356.       examined BIOS, functions 02h-04h,06h-07h,89h-8Bh, and 8Dh also
  24357.       always return CF set and AH=86h
  24358. SeeAlso: AX=DA00h,AX=DA01h,AX=DA88h,AX=DA99h,AX=DB00h
  24359. --------b-15DA00-----------------------------
  24360. INT 15 U - AMI PCI BIOS - ???
  24361.     AX = DA00h
  24362.     CL = subfunction
  24363.         00h ???
  24364.         01h ???
  24365.         02h get ???
  24366.     ???
  24367. Return: CF clear if successful
  24368.         ???
  24369.     CF set on error
  24370.         AH = error code (86h unsupported subfunction)
  24371. Note:    in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h always return
  24372.       failure
  24373. SeeAlso: AX=DA01h
  24374. --------b-15DA01-----------------------------
  24375. INT 15 U - AMI PCI BIOS - CPU SPEED CONTROL
  24376.     AX = DA01h
  24377.     CL = subfunction (00h-02h)
  24378.         00h set low CPU speed
  24379.         01h set high CPU speed
  24380.         02h get current CPU speed
  24381. Return: CF clear if successful
  24382.         AH = current/new CPU speed (00h low, 01h high)
  24383.         AL = ??? (00h)
  24384.     CF set on error
  24385.         AH = error code (86h unsupported subfunction)
  24386. Notes:    in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h are NOPs in both
  24387.       protected and V86 modes due to a test of MSW bit 0
  24388.     setting the CPU speed also generates the same audible signals generated
  24389.       when manually switching speeds with Ctrl-Alt-Gray- and Ctrl-Alt-Gray+
  24390. BUG:    the BIOS apparently intends to return CF set if ???, but fails to use
  24391.       a different exit path in that case, resulting in CF clear
  24392. ----------15DA05-----------------------------
  24393. INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
  24394.     AX = DA05h
  24395.     ES:SI -> 8-byte buffer for ??? and BIOS revision strings
  24396. Return: CF clear
  24397.     ES:SI buffer filled
  24398.     AL = 00h
  24399.     CX = ??? (0000h)
  24400. Notes:    for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
  24401.       string is "AX1 "
  24402. SeeAlso: AX=DA15h,AX=DB04h
  24403. ----------15DA08-----------------------------
  24404. INT 15 U - AMI PCI BIOS - ???
  24405.     AX = DA08h
  24406.     ???
  24407. Return: CF clear if successful
  24408.         ???
  24409.     CF set on error
  24410.         AH = error code (86h unsupported subfunction)
  24411. Note:    in the examined v1.00.05.AX1 BIOS, this call always returns failure
  24412. ----------15DA12-----------------------------
  24413. INT 15 U - AMI PCI BIOS - v1.00.05.AX1 - ???
  24414.     AX = DA12h
  24415.     CL = subfunction
  24416.         00h ???
  24417.         01h    ???
  24418.         02h get ???
  24419.         03h ???
  24420.         04h ???
  24421.     ???
  24422. Return: CF clear if successful
  24423.         ???
  24424.     CF set on error
  24425.         AH = error code (86h unsupported subfunction)
  24426. Desc:    ??? performs various manipulations on system chipset registers
  24427. Notes:    subfunctions 00h and 01h are NOPs in protected and V86 modes due to
  24428.       a test of MSW bit 0
  24429.     subfunctions 00h-02h always return success
  24430. ----------15DA14-----------------------------
  24431. INT 15 U - AMI PCI BIOS - GET/SET ???
  24432.     AX = DA14h
  24433.     CL = subfunction
  24434.         00h read
  24435.         01h write
  24436.         DH = new value for ??? (00h-02h)
  24437.     DL = index of ??? (00h-03h, but not range-checked)
  24438.     ???
  24439. Return: CF clear if successful
  24440.         DH = current value of ??? if reading
  24441.     CF set on error
  24442.         AH = error code (86h unsupported subfunction)
  24443. Note:    the values for indexes 00h and 01h are stored in CMOS RAM location 19h,
  24444.       and the values for 02h and 03h are stored in location 36h
  24445. BUG:    the v1.00.05.AX1 BIOS range-checks DH on subfunction 00h instead of
  24446.       subfunction 01h, even though DH is never used by subfunction 00h
  24447. ----------15DA15-----------------------------
  24448. INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
  24449.     AX = DA15h
  24450.     ES:DI -> 8-byte buffer for ??? and BIOS revision strings
  24451. Return: CF clear
  24452.     ES:DI buffer filled
  24453.     AL = 00h
  24454. Note:    for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
  24455.       string is "AX1 "
  24456. SeeAlso: AX=DA05h,AX=DB04h
  24457. ----------15DA19-----------------------------
  24458. INT 15 U - AMI PCI BIOS - GET/SET ???
  24459.     AX = DA19h
  24460.     CL = subfunction
  24461.         00h get first ???
  24462.         01h get second ???
  24463.         02h set first ???
  24464.         BX = ???
  24465.         DX = ???
  24466.         03h set second ???
  24467.         BX = ???
  24468.         DX = ???
  24469. Return: CF clear if successful
  24470.         AX = 0000h
  24471.         BX,DX = ??? (subfunctions 00h and 01h only)
  24472.     CF set on error
  24473.         AH = error code (86h unsupported subfunction)
  24474. Note:    the first ??? is stored in CMOS RAM locations 1Bh-1Eh, the second in
  24475.       locations 1Fh-22h in the v1.00.05.AX1 BIOS
  24476. --------b-15DA20-----------------------------
  24477. INT 15 U - AMI PCI BIOS v1.00.12.AX1T - CMOS RAM BITFIELD MANIPULATION
  24478.     AX = DA20h
  24479.     BL = subfunction
  24480.         00h set CMOS data field
  24481.         BH = CMOS data field number (00h-4Dh)
  24482.         CH = new value for bitfield (in lowest bits of register)
  24483.         01h read CMOS data field
  24484.         BH = CMOS data field number (00h-4Dh)
  24485.         Return: CH = value of bitfield
  24486.             CL = mask of valid bits
  24487.         Note:    both CL/CH shifted to move valid bits into lowest pos
  24488.         02h set CMOS byte
  24489.         CL = CMOS RAM address (00h-7Fh)
  24490.         CH = new value for CMOS byte
  24491.         03h get CMOS byte
  24492.         CL = CMOS RAM address (00h-7Fh)
  24493.         Return: CH = value of CMOS byte
  24494.         04h update CMOS checksums
  24495.         Note:    sets 2Eh/2Fh to checksum of 10h-2Dh and 7Eh/7Fh to
  24496.               checksum of 48h-7Dh
  24497.         05h verify CMOS checksums
  24498.         Return:    CF clear if checksums OK
  24499.                 AH = 00h
  24500.             CF set if checksum mismatch
  24501.                 AH = 01h
  24502. Return: CF clear if successful
  24503.         AH = 00h
  24504.     CF set on error
  24505.         AH = error code (86h unsupported function/data field)
  24506. Notes:    this function was not supported by the v1.00.05.AX1 BIOS, but had been
  24507.       added by 1.00.12.AX1T
  24508.     after using subfunctions 00h or 02h, the application must call
  24509.       subfunction 04h to update the checksums to prevent an error the next
  24510.       time the system is booted
  24511.  
  24512. (Table 0466)
  24513. Values for AMI BIOS v1.00.12.AX1T CMOS bitfield identifier:
  24514.  ID    address    bit(s)    contents
  24515.  00h    1Ah    7-6
  24516.  01h    1Dh    7-6
  24517.  02h    6Eh    1
  24518.  03h    77h    0
  24519.  04h    77h    1
  24520.  05h    77h    2
  24521.  06h    77h    3
  24522.  07h    77h    5
  24523.  08h    77h    6
  24524.  09h    77h    7
  24525.  0Ah    78h    7    power management enabled???
  24526.  0Bh    78h    6
  24527.  0Ch    10h    7-4    first floppy drive type
  24528.  0Dh    10h    3-0    second floppy drive type
  24529.  0Eh    11h    7
  24530.  0Fh    20h    4-0    selected language for error messages/setup utility
  24531.  10h    11h    2-1
  24532.  11h    11h    4
  24533.  12h    11h    0
  24534.  13h    11h    3
  24535.  14h    13h    7
  24536.  15h    13h    6-5
  24537.  16h    13h    4-2
  24538.  17h    19h    7
  24539.  18h    19h    6
  24540.  19h    19h    5
  24541.  1Ah    19h    4
  24542.  1Bh    1Eh    2-0
  24543.  1Ch    1Bh    7-6
  24544.  1Dh    1Ch    7
  24545.  1Eh    1Ch    3
  24546.  1Fh    1Ah    5-4
  24547.  20h    1Dh    5-4
  24548.  21h    1Bh    5-4
  24549.  22h    1Ch    6
  24550.  23h    1Ch    2
  24551.  24h    1Ah    3-2
  24552.  25h    1Dh    3-2
  24553.  26h    1Bh    3-2
  24554.  27h    1Ch    5
  24555.  28h    1Ch    1
  24556.  29h    1Ah    1-0
  24557.  2Ah    1Dh    1-0
  24558.  2Bh    1Bh    1-0
  24559.  2Ch    1Ch    4
  24560.  2Dh    1Ch    0
  24561.  2Eh    50h    7-0
  24562.  2Fh    51h    7-0
  24563.  30h    52h    7-0
  24564.  31h    53h    7-0
  24565.  32h    60h    0
  24566.  33h    60h    0
  24567.  34h    60h    0
  24568.  35h    60h    0
  24569.  36h    60h    0
  24570.  37h    60h    0
  24571.  38h    60h    1
  24572.  39h    61h    7
  24573.  3Ah    60h    2
  24574.  3Bh    61h    6-4
  24575.  3Ch    61h    2-0
  24576.  3Dh    60h    7-6
  24577.  3Eh    60h    5-4
  24578.  3Fh    78h    5-4
  24579.  40h    6Eh    5
  24580.  41h    1Eh    3
  24581.  42h    6Eh    0
  24582.  43h    6Eh    2
  24583.  44h    6Fh    1-0
  24584.  45h    6Fh    1-0
  24585.  46h    28h    4-2
  24586.  47h    28h    7-5
  24587.  48h    6Eh    4
  24588.  49h    6Eh    3
  24589.  4Ah    76h    7-0
  24590.  4Bh    77h    4
  24591.  4Ch    11h    6
  24592.  4Dh    1Fh    7-0
  24593. ----------15DA88-----------------------------
  24594. INT 15 U - AMI PCI BIOS - GET EXTENDED MEMORY SIZE
  24595.     AX = DA88h
  24596. Return: CF clear (successful)
  24597.     AX = 0000h
  24598.     CL:BX = extended memory size in KBytes
  24599. SeeAlso: AH=88h
  24600. ----------15DA8C-----------------------------
  24601. INT 15 U - AMI PCI BIOS - GET BIOS AND CHIPSET IDENTIFICATION
  24602.     AX = DA8Ch
  24603.     CL = subfunction
  24604.         00h get BIOS version string
  24605.         ES:DI -> 12-byte buffer for version string
  24606.         01h get chipset identification
  24607.         BL = what to retrieve
  24608.             (00h host/PCI bridge,01h motherboard chipset)
  24609.         ES:DI -> 12-byte buffer for chipset identification (see #0467)
  24610. Return: CF clear if successful
  24611.         ES:DI buffer filled
  24612.     CF set on error
  24613.         AH = error code (86h unsupported subfunction)
  24614. Notes:    the v1.00.05.AX1 BIOS returns "1.00.05.AX1 " as its version string
  24615.     subfunction 01h returns the five bytes read from the PCI configuration
  24616.       registers 00h-05h (see #0798), padded to 12 bytes with NULs
  24617. SeeAlso: AX=DB04h,PORT C000h"Neptune"
  24618.  
  24619. Format of AMI PCI BIOS chipset identification:
  24620. Offset    Size    Description    (Table 0467)
  24621.  00h    WORD    vendor ID (see #0656 at AX=B102h)
  24622.         8086h = Intel
  24623.  02h    WORD    device ID
  24624.         0484h (BL=01h)
  24625.         04A3h (BL=00h)
  24626.  04h    BYTE    low byte of PCI Command Register
  24627.  05h  7 BYTEs    unused (00h)
  24628. ----------15DA8E-----------------------------
  24629. INT 15 U - AMI PCI BIOS - ???
  24630.     AX = DA8Eh
  24631.     ???
  24632. Return: CF clear if successful
  24633.         ???
  24634.     CF set on error
  24635.         AH = error code (86h unsupported subfunction)
  24636. Note:    in the    v1.00.05.AX1 BIOS, this call always returns failure
  24637. ----------15DA92-----------------------------
  24638. INT 15 U - AMI PCI BIOS - GET CPU TYPE AND SPEED
  24639.     AX = DA92h
  24640. Return: CF clear (successful)
  24641.     AL = CPU stepping (see also #0453 at INT 15/AH=C9h)
  24642.     AH = CPU model
  24643.     BL = CPU family (05h = Pentium, etc.)
  24644.     CX = external clock speed in MHz (BCD)
  24645.         (0040h,0050h,0060h,0066h are possible return values on my
  24646.           Pentium with the Intel "Neptune" chipset)
  24647.     EAX high word destroyed
  24648. Note:    90 MHz and faster Pentium CPUs can be configured to run at varying
  24649.       multiples of the external clock speed, i.e. a typical 90 MHz Pentium
  24650.       system will run the motherboard at 60 MHz (my 90 MHz Pentium returns
  24651.       0060h in CX)
  24652. SeeAlso: AH=C9h
  24653. ----------15DA99-----------------------------
  24654. INT 15 U - AMI PCI BIOS - GET/SET ??? FLAG
  24655.     AX = DA99h
  24656.     CL = subfunction
  24657.         00h check if ???
  24658.         01h set ??? flag
  24659.         02h clear ??? flag
  24660. Return: CF clear if successful
  24661.         AH = ??? (00h,01h)
  24662.         AL = 00h
  24663.     CF set on error
  24664.         AH = error code (86h unsupported subfunction)
  24665. Note:    the flag is stored in bit 0 of CMOS RAM location 2Ch for BIOS
  24666.       v1.00.05.AX1
  24667. --------b-15DB00-----------------------------
  24668. INT 15 U - AMI BIOS - Flash ROM - READ FLASH BIOS
  24669.     AX = DB00h
  24670.     DS:SI -> parameter block (see #0468)
  24671.     ES:DI -> buffer for copied information
  24672. Return: CF clear if successful
  24673.     CF set on error
  24674.         AH = status (86h if not implemented)
  24675.     DS,ES destroyed, possibly other registers
  24676. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  24677. SeeAlso: AH=DAh,AX=DB01h,AX=DB04h
  24678.  
  24679. Format of AMI BIOS Flash ROM parameter block:
  24680. Offset    Size    Description    (Table 0468)
  24681.  00h 32 BYTEs    ASCIZ description of the file's contents
  24682.  20h    BYTE    Logical area type (see #0469)
  24683.  21h    DWORD    logical area size (overall size of area)
  24684.  25h    BYTE    flag: load from file (FF=yes, 00=no)
  24685.  26h    BYTE    flag: reboot after update (FF=yes, 00=no)
  24686.  27h    BYTE    flag: update entire image (FF=yes, 00=no)
  24687.  28h 24    BYTEs    ASCIZ logical area name (cooresponds to offset 20)
  24688.         "System BIOS"
  24689.         "Logo Data Area", etc.
  24690.  40h 15 BYTEs    ASCIZ time stamp string: MM/DD/YY-HH:MM
  24691.  4Fh    BYTE    checksum for this header (sum of all bytes except this one)
  24692.         if checksum would be 00h,01h, or FFh, it is set to 2Ah
  24693.  50h    DWORD    this file's starting address (offset in image)
  24694.  54h    DWORD    size of image chunk in this file
  24695.  58h    BYTE    logical area type - same as offset 20h
  24696.  59h    BYTE    flag: last file in chain (FF=yes, 00=no)
  24697.  5Ah  6 BYTEs    ASCIZ signature "FLASH"
  24698.  60h 16 BYTEs    ASCIZ filename of next file in chain
  24699.  70h 16 BYTEs    ASCIZ BIOS reserved string (usually version #)
  24700. Notes:    this block is identical in format to the 128-byte header on an AMI
  24701.       BIOS Update file
  24702.     for AX=DB00h, the following fields must be specified: 50h,54h,58h;
  24703.       the fields at offset 20h and 5Ah should also be set if possible
  24704.     the fields at offsets 40h and 70h will be set on return, if available
  24705. SeeAlso: #0470
  24706. --------b-15DB01-----------------------------
  24707. INT 15 U - AMI BIOS - Flash ROM - GET BIOS SUBSYSTEM INFORMATION
  24708.     AX = DB01h
  24709.     CL = BIOS subsystem information identifier (see #0469)
  24710. Return: CF clear if successful
  24711.         AX = 0000h
  24712.         ES:DI -> 56-byte record describing subsystem (see #0470)
  24713.     CF set on error
  24714.         AH = status
  24715.         01h nonexistent subsystem
  24716.         86h function not supported
  24717.         AL = 00h
  24718. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  24719. SeeAlso: AX=DB00h,AX=DB02h
  24720.  
  24721. (Table 0469)
  24722. Values for AMI BIOS subsystem identifier:
  24723.  00h    recovery code
  24724.  01h    system BIOS
  24725.  02h    PCI configuration data
  24726.  03h    OEM logo data area (see #0471)
  24727.  04h    system BIOS/Language Set (one system)
  24728.     configuration utility (another system)
  24729. SeeAlso: #0470
  24730.  
  24731. Format of AMI BIOS subsystem information:
  24732. Offset    Size    Description    (Table 0470)
  24733.  00h    BYTE    subsystem identifier/logical area type (see #0469)
  24734.  01h    DWORD    subsystem (FlashROM page) size in bytes
  24735.  05h    BYTE    flag: loadable from file (FFh=yes)
  24736.  06h    BYTE    flag: reboot after update (FFh=yes)
  24737.  07h    BYTE    flag: update entire image (FFh=yes)
  24738.  08h 24 BYTEs    subsystem/logical area name
  24739.  20h    BYTE    subsystem identifier???
  24740.  21h    BYTE    flag: reprogrammable if FFh
  24741.  22h    BYTE    ??? (01h,02h seen)
  24742.  23h  5 BYTEs    ??? (apparently always 00h)
  24743.  28h 16 BYTEs    BIOS reserved string (usually version number)
  24744. SeeAlso: #0468
  24745.  
  24746. Format of AMI OEM Logo data area:
  24747. Offset    Size    Description    (Table 0471)
  24748.  00h  8 BYTEs    signature
  24749.         "TEXTLOGO" if text-mode OEM logo
  24750.         8 DUP (FFh) if unused
  24751.  08h    WORD    offset of logo font definition table
  24752.  0Ah    WORD    offset of logo data
  24753.  0Ch    WORD    size of logo font table in words
  24754.  0Eh    WORD    offset of upper left corner of logo in video page
  24755.  10h    WORD    width of logo
  24756.  12h    WORD    height of logo
  24757.  14h    BYTE    reserved???
  24758.  var    var    logo font definition (16 bytes per character)
  24759.  var    var    logo data as character/attribute pairs
  24760. Note:    the attribute for the logo characters specifies which font will be used
  24761.       for that character.  If bit 3 is cleared, the normal system font is
  24762.       used; if bit 3 is set, the logo font is used, with screen colors
  24763.       adjusted to match the corresponding non-bright attribute for the
  24764.       system font
  24765. SeeAlso: #0469,#0470
  24766. --------b-15DB02-----------------------------
  24767. INT 15 U - AMI BIOS - Flash ROM - GET SIZE OF FLASH ROM PROGRAMMING CODE
  24768.     AX = DB02h
  24769. Return: CF clear
  24770.     AX = 0000h
  24771.     BX = size of ROM programming code in bytes
  24772. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  24773. SeeAlso: AX=DB00h,AX=DB03h
  24774. --------b-15DB03-----------------------------
  24775. INT 15 U - AMI BIOS - Flash ROM - GET FLASH ROM PROGRAMMING CODE
  24776.     AX = DB03h
  24777.     DS:SI -> ???
  24778.     ES:DI -> buffer for Flash ROM programming code
  24779.     BX = ???
  24780.     DX = ???
  24781. Return: CF clear if successful
  24782.         AH = ???
  24783.         BX = ???
  24784.         DX = ???
  24785.     CF set on error
  24786.         AH = error code
  24787. Notes:    the entry point for the copied code (which is fully relocatable) is
  24788.       the very first byte (see #0472)
  24789.     used by FMUP.EXE, Intel's Flash Memory Update utility
  24790. SeeAlso: AX=DB00h,AX=DB02h
  24791.  
  24792. (Table 0472)
  24793. Call AMI BIOS ??? code with:
  24794.     AL = function
  24795.         00h erase Flash ROM block
  24796.         CX = ???
  24797.             bit 8: address line A16 inverted
  24798.         ???
  24799.         01h program new data into Flash ROM
  24800.         ???
  24801.         02h perform cold reboot
  24802.     DS:SI -> ??? (see #0473)
  24803.     ES:DI -> ???
  24804. Return: AH = status
  24805.         00h successful
  24806.         01h invalid function
  24807.         02h ???
  24808.         03h ???
  24809.         04h ???
  24810. Note:    DS:SI and ES:DI are ignored for function 02h
  24811.  
  24812. Format of AMI BIOS Flash ROM programming parameters:
  24813. Offset    Size    Description    (Table 0473)
  24814.  00h 32 BYTEs    ???
  24815.  20h    BYTE    BIOS section number
  24816.  21h    DWORD    length of BIOS code/data in bytes
  24817.  25h 43 BYTEs    ???
  24818.  50h    DWORD    ???
  24819.  54h 44 BYTEs    ???
  24820. SeeAlso: #0472
  24821. --------b-15DB04-----------------------------
  24822. INT 15 U - AMI BIOS - Flash ROM - GET BIOS REVISION
  24823.     AX = DB04h
  24824. Return: CF clear if supported
  24825.         BL:BH:DL:DH = BIOS revision string
  24826.         (e.g. 'AX1 ' for v1.00.05.AX1, 'AV0M' for v1.00.03.AV0M)
  24827.         CL = flag: DH valid?
  24828.         00h ignore DH; ignore DL as well if 20h (space)
  24829.         01h ignore DH if 20h (space)
  24830.         CH = BIOS status
  24831.         00h normal mode
  24832.         01h ROM recovery mode
  24833.         AL = ??? (02h)
  24834. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  24835. SeeAlso: AX=DA05h,AX=DA15h,AX=DA8Ch,AX=DB00h,AX=DB03h
  24836. --------Q-15DE00-----------------------------
  24837. INT 15 - DESQview - GET PROGRAM NAME
  24838.     AX = DE00h
  24839. Return: AX = offset into DESQVIEW.DVO of program most recently selected from
  24840.           the "Switch Windows" menu (see #0474)
  24841. Note:    always returns AX=0000h under DESQview/X
  24842. SeeAlso: AX=DE07h
  24843.  
  24844. Format of program entry in DESQVIEW.DVO:
  24845. Offset    Size    Description    (Table 0474)
  24846.  00h    BYTE    length of name (FFh if end of file)
  24847.  01h  N BYTEs    name
  24848.       2 BYTEs    keys to invoke program (second = 00h if only one key used)
  24849.     BYTE    program type
  24850.         00h normal program
  24851.         04h divider
  24852.         80h Delete a Program
  24853.         81h Change a Program
  24854.     WORD    ??? apparently always 0000h
  24855. --------Q-15DE01-----------------------------
  24856. INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU
  24857.     AX = DE01h
  24858. Return: nothing
  24859. Notes:    reads DESQVIEW.DVO, disables Open menu if file not in current directory
  24860.     NOP for DESQview/X
  24861. --------Q-15DE02-----------------------------
  24862. INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
  24863.     AX = DE02h
  24864. Return: nothing
  24865. Note:    this call is a NOP in DV 2.x
  24866. SeeAlso: AX=DE03h
  24867. --------Q-15DE03-----------------------------
  24868. INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
  24869.     AX = DE03h
  24870. Return: AX = ??? for current window
  24871.     BX = ??? for current window
  24872. Note:    this call is a NOP in DV 2.x
  24873. SeeAlso: AX=DE02h
  24874. --------Q-15DE04-----------------------------
  24875. INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
  24876.     AX = DE04h
  24877. Return: BX = bytes of common memory available
  24878.     CX = largest block available
  24879.     DX = total common memory in bytes
  24880. SeeAlso: AX=DE05h,AX=DE06h
  24881. --------Q-15DE05-----------------------------
  24882. INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
  24883.     AX = DE05h
  24884. Return: BX = KB of memory available
  24885.     CX = largest block available
  24886.     DX = total conventional memory in KB
  24887. SeeAlso: AX=DE04h,AX=DE06h
  24888. --------Q-15DE06-----------------------------
  24889. INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
  24890.     AX = DE06h
  24891. Return: BX = KB of expanded memory available
  24892.     CX = largest block available
  24893.     DX = total expanded memory in KB
  24894. SeeAlso: AX=DE04h,AX=DE05h
  24895. --------Q-15DE07-----------------------------
  24896. INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER
  24897.     AX = DE07h
  24898. Return: AX = number of program as it appears on the "Switch Windows" menu
  24899. Note:    this API call may be made from a hardware interrupt handler
  24900. SeeAlso: AX=DE00h
  24901. --------Q-15DE08-----------------------------
  24902. INT 15 - DESQview - GET ???
  24903.     AX = DE08h
  24904. Return: AX = 0000h if ??? is not set to the current task
  24905.          0001h if ??? is set to the current task
  24906. --------Q-15DE09-----------------------------
  24907. INT 15 - DESQview - UNIMPLEMENTED
  24908.     AX = DE09h
  24909. Return: nothing (NOP in DV 1.x and 2.x)
  24910. --------Q-15DE0A-----------------------------
  24911. INT 15 - DESQview v2.00+ - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE
  24912.     AX = DE0Ah
  24913.     BL = character
  24914. Return: character displayed, next call will display in next position (which
  24915.     wraps back to the start of the line if off the right edge of screen)
  24916. Notes:    displays character on bottom line of *physical* screen, regardless
  24917.       of current size of window (even entirely hidden)
  24918.     does not know about graphics display modes, just pokes the characters
  24919.       into display memory
  24920.     this API call may be made from a hardware interrupt handler
  24921. SeeAlso: AX=1003h
  24922. --------Q-15DE0B-----------------------------
  24923. INT 15 - DESQview v2.00+ - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED
  24924.     AX = DE0Bh
  24925.     BL = API level minor version number
  24926.     BH = API level major version number
  24927. Return: AX = maximum API level (AH = major, AL = minor)
  24928. Notes:    if the requested API level is greater than the version of DESQview, a
  24929.       "You need a newer version" error window is popped up
  24930.     the API level defaults to 1.00, and is inherited by child tasks
  24931. --------Q-15DE0C-----------------------------
  24932. INT 15 - DESQview v2.00+ - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  24933.     AX = DE0Ch
  24934.     BX = number of bytes
  24935. Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+)
  24936. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  24937.       system memory
  24938. SeeAlso: AX=1001h,AX=102Eh,AX=DE0Dh,AX=DE15h,AX=DE19h
  24939. --------Q-15DE0D-----------------------------
  24940. INT 15 - DESQview v2.00+ - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  24941.     AX = DE0Dh
  24942.     ES:DI -> previously allocated block
  24943. Return: nothing
  24944. SeeAlso: AX=1002h,AX=DE0Ch
  24945. --------Q-15DE0E-----------------------------
  24946. INT 15 - DESQview v2.00+ - "FINDMAIL" - FIND MAILBOX BY NAME
  24947.     AX = DE0Eh
  24948.     ES:DI -> name to find (see #0475)
  24949.     CX = length of name
  24950. Return: BX = 0000h not found
  24951.          0001h found
  24952.         DS:SI = object handle
  24953. SeeAlso: AH=12h/BH=11h,AH=12h/BH=12h"GETNAME"
  24954.  
  24955. (Table 0475)
  24956. Values for special DESQview mailbox names:
  24957.  "COM1" ... "COM4"    RBcomm using COM1 ... COM4
  24958.  "DESQview/X Help Engine"
  24959.  "DESQview/X Network Server"  Network Manager
  24960.  "DESQview X Server0"    X-Windows server
  24961.  "DESQview X Server7"    X-Windows printing service
  24962.  "INBOX"        DESQview/X LPD requests
  24963.  "OUTBOX"        DESQview/X LPD responses
  24964.  "WAITBOX"        semaphore to synchronize DESQview/X LPD communications
  24965.  "_DVNM_"        DV/X v1.10 network manager
  24966. --------Q-15DE0F-----------------------------
  24967. INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS
  24968.     AX = DE0Fh
  24969. Return: AX and BX destroyed (seems to be bug, weren't saved&restored)
  24970. Notes:    sends a manager stream with opcodes AEh, BDh, and BFh to task's window
  24971.     enables an additional mouse mode
  24972. --------Q-15DE10-----------------------------
  24973. INT 15 - DESQview v2.00+ - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM
  24974.     AX = DE10h
  24975.     BH = scan code
  24976.     BL = character
  24977. Return: nothing
  24978. Notes:    a later read will get the keystroke as if it had been typed by the user
  24979.     multiple pushes are read last-in first-out
  24980.     if a script exists for the pushed key in the current application, the
  24981.       script will be executed
  24982.     early copies of DV 2.00 destroy AX, BX, ES, and DI
  24983. SeeAlso: INT 16/AH=05h
  24984. --------Q-15DE11BL00-------------------------
  24985. INT 15 - DESQview v2.00+ - "JUSTIFY" - EN/DISABLE AUTOM. WINDOW JUSTIFICATION
  24986.     AX = DE11h
  24987.     BL = 00h      viewport will not move automatically
  24988.          nonzero  viewport will move to keep cursor visible (default)
  24989. Return: nothing
  24990. --------Q-15DE12BX0000-----------------------
  24991. INT 15 - DESQview v2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET
  24992.     AX = DE12h
  24993.     BX = 0000h    select normal style (linefeed only moves down)
  24994.          nonzero  select C style (linefeed moves to start of next line)
  24995. Return: nothing
  24996. Note:    set on a per-task basis, and inherited from the parent task
  24997. --------Q-15DE13-----------------------------
  24998. INT 15 - DESQview v2.20+ - "GETCRIT" - GET CRITICAL NESTING COUNT
  24999.     AX = DE13h
  25000. Return: BX = number of calls to BEGINC or ENTERC
  25001.           (see INT 15/AX=101Bh,INT 15/AX=DE1Ch) without matching ENDC
  25002.           (see INT 15/AX=101Ch)
  25003. Note:    this API call may be made from within a hardware interrupt handler
  25004. SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch
  25005. --------Q-15DE14-----------------------------
  25006. INT 15 - DESQview v2.20+ - GET OBJECT TYPE
  25007.     AX = DE14h
  25008.     ES:DI -> object
  25009. Return: BL = 00h not an object
  25010.          08h window or task
  25011.          09h mailbox
  25012.          0Ah keyboard
  25013.          0Bh timer
  25014.          0Ch objectq
  25015.          0Fh pointer
  25016.          10h panel
  25017. SeeAlso: AX=1016h
  25018. --------Q-15DE15-----------------------------
  25019. INT 15 - DESQview v2.20+ - SET ERROR HANDLING
  25020.     AX = DE15h
  25021.     BL = error handling mode
  25022.         00h post system error on all error conditions
  25023.         01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
  25024.         messages sent to mailboxes which fail due to lack of system
  25025.         or common memory
  25026.         02h (v2.26+) same as 01h, but also return null pointer for GETMEM
  25027.         calls which fail due to lack of system memory
  25028. Return: nothing
  25029. SeeAlso: AX=DE0Ch,AX=DE16h
  25030. --------Q-15DE16-----------------------------
  25031. INT 15 - DESQview v2.20+ - GET ERROR HANDLING
  25032.     AX = DE16h
  25033. Return: BL = current mode
  25034.         00h always post system error
  25035.         01h return carry flag set on failed mailbox writes
  25036.         02h return CF set on failed mailbox writes and NULL on failed
  25037.         GETMEM calls
  25038. SeeAlso: AX=DE15h
  25039. --------Q-15DE17-----------------------------
  25040. INT 15 - DESQview v2.20-2.25 - reserved
  25041.     AX = DE17h
  25042. Return: pops up "Programming error" window
  25043. Note:    AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25
  25044. SeeAlso: AX=1117h
  25045. --------Q-15DE17-----------------------------
  25046. INT 15 - DESQview v2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  25047.     AX = DE17h
  25048.     BX = function
  25049.         0000h   get current mapping context without setting
  25050.         nonzero set new mapping context to BX
  25051. Return: BX = mapping context in effect before call
  25052. Notes:    mapping contexts determine conventional-memory addressability; setting
  25053.       a mapping context ensures that the associated program and data areas
  25054.       are in memory for access.  Usable by drivers, TSRs and shared
  25055.       programs.
  25056.     caller need not be running under DESQview
  25057.     this API call may be made from a hardware interrupt handler
  25058. SeeAlso: AX=1016h,AX=1117h,AX=DE21h,INT 2F/AX=1685h
  25059. --------Q-15DE18-----------------------------
  25060. INT 15 - DESQview v2.20+ - internal - ???
  25061.     AX = DE18h
  25062.     BP = function number
  25063.         high byte must be 10h
  25064.         low byte is function
  25065.         00h set ???
  25066.             BL = ???  (00h-10h, video mode???)
  25067.             BH = value to store
  25068.         03h set ???
  25069.             BL = ??? (stored in driver)
  25070.         0Ah get ???
  25071.             ES:DI -> 18-byte buffer to hold ???
  25072. Note:    calls video driver (NOP for Hercules driver,probably CGA and MCGA also)
  25073. --------Q-15DE19-----------------------------
  25074. INT 15 - DESQview v2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY
  25075.     AX = DE19h
  25076.     BX = number of bytes to allocate
  25077. Return: AX = 0000h successful
  25078.         ES:DI -> allocated block
  25079.          nonzero insufficient memory
  25080. Note:    this API call may be made from within a hardware interrupt handler
  25081. SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah
  25082. --------Q-15DE1A-----------------------------
  25083. INT 15 - DESQview v2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY
  25084.     AX = DE1Ah
  25085.     ES:DI -> previously allocated block
  25086. Return: AX = 0000h (successful)
  25087. Note:    this function may be called from within a hardware interrupt handler
  25088. SeeAlso: AX=DE0Dh,AX=DE19h
  25089. --------Q-15DE1B-----------------------------
  25090. INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT
  25091.     AX = DE1Bh
  25092. Return: nothing
  25093. SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch
  25094. --------Q-15DE1C-----------------------------
  25095. INT 15 - DESQview v2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT
  25096.     AX = DE1Ch
  25097. Return: nothing
  25098. Notes:    similar to AX=101Bh, but begins the critical region without ensuring
  25099.       that DOS is free
  25100.     the official documentation states that this call should be paired with
  25101.       "ENDC" (AX=101Ch); no mention is made of AX=DE1Bh
  25102.     this API call may be made from within a hardware interrupt handler
  25103. SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh
  25104. --------Q-15DE1D-----------------------------
  25105. INT 15 - DESQview v2.23+ - "PUTKEY" - FAKE USER KEYSTROKES
  25106.     AX = DE1Dh
  25107.     DX = segment of handle for task to receive keystroke
  25108.     BL = character
  25109.     BH = scan code
  25110. Return: AX = 0000h if successful
  25111.        nonzero if receiver's keyboard buffer was full
  25112. Notes:    the key is treated as though the user had pressed it, ignoring any
  25113.       script which may be bound to the key, and using the current field
  25114.       table if the keyboard object is in field processing mode
  25115.     multiple PUTKEYs are seen in the order in which they are executed
  25116. SeeAlso: AX=DE10h
  25117. --------Q-15DE1E-----------------------------
  25118. INT 15 - DESQview v2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS
  25119.     AX = DE1Eh
  25120. Return: CL = actual number of rows on screen
  25121.     CH = actual number of columns on screen
  25122.     BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+)
  25123. Note:    this API call may be made from a hardware interrupt handler
  25124. SeeAlso: INT 10/AH=0Fh
  25125. --------Q-15DE1F-----------------------------
  25126. INT 15 - DESQview v2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS
  25127.     AX = DE1Fh
  25128. Return: BX = segment of task handle or 0000h if no tasks are using DOS
  25129. Note:    this API call may be made from within a hardware interrupt handler
  25130. SeeAlso: AX=DE13h,INT 21/AH=34h
  25131. --------Q-15DE20-----------------------------
  25132. INT 15 - DESQview v2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK
  25133.     AX = DE20h
  25134.     BX = segment of handle of task to interupt
  25135.     DX:CX -> FAR interrupt routine
  25136.     BP,SI,DI,DS,ES as required by interrupt routine
  25137. Return: nothing
  25138. Notes:    unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task
  25139.       making the DISPATCHINT call
  25140.     multiple "DISPATCHINT" calls are processed in the order in which they
  25141.       were executed
  25142.     the FAR routine is entered with the current ES, DS, SI, DI, and BP
  25143.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  25144.       needs to be preserved
  25145.     this API call may be made from within a hardware interrupt handler
  25146. SeeAlso: AX=1021h,AX=DE2Ah
  25147. --------Q-15DE21-----------------------------
  25148. INT 15 - DESQview v2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION
  25149.     AX = DE21h
  25150.     BX = new state
  25151.         0000h turn off
  25152.         nonzero turn on
  25153. Return: BX = old state of virtualization
  25154. Notes:    this API call may be made from within a hardware interrupt handler
  25155.     under DV 2.40 and 2.42, this call appears to have no effect and always
  25156.       returns a nonzero value in BX which appears to be the offset within
  25157.       the DV common memory segment of the caller's task object; it may
  25158.       only have an effect within a hardware interrupt handler
  25159. SeeAlso: AX=1117h,AX=DE17h
  25160. --------Q-15DE22-----------------------------
  25161. INT 15 - DESQview v2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS
  25162.     AX = DE22h
  25163.     DX = segment of task handle
  25164. Return: DX = total amount of memory in paragraphs
  25165.     BX = amount of system memory in paragraphs
  25166.     CX = largest block of system memory available in paragraphs
  25167.     AX = memory flags (see #0476)
  25168. Notes:    if the task handle is a child task, the returned values will be for the
  25169.       process containing the task, rather than the task itself
  25170.     if the process's system memory is swapped out, BX,CX,DX remain
  25171.       unchanged, because the memory usage cannot be determined
  25172. SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h
  25173.  
  25174. Bitfields for DESQview process memory flags:
  25175. Bit(s)    Description    (Table 0476)
  25176.  0    system memory resides in shared memory
  25177.  1    process's memory is swapped out
  25178.  2    process's system memory is swapped out
  25179. --------Q-15DE23-----------------------------
  25180. INT 15 U - DESQview v2.31+ - ???
  25181.     AX = DE23h
  25182.     BX = ??? IRQ number on first PIC?
  25183.     CX = ??? IRQ number on second PIC?
  25184. Return: ???
  25185. Note:    called by QEMM 6.00+
  25186. --------Q-15DE24-----------------------------
  25187. INT 15 - DESQview v2.40+ - "XNEWPROC" - START NEW APPLICATION
  25188.     AX = DE24h
  25189.     BX = length of .DVP data
  25190.     CX = length of ??? string
  25191.     DS:SI -> ??? string
  25192.     ES:DI -> .DVP data (see #0353 at AX=102Ch)
  25193. Return: BX = segment of task handle??? or 0000h on error
  25194. Note:    this call is similar to AX=102Ch except that it can interpret the
  25195.       extended DVP data
  25196. SeeAlso: AX=102Ch
  25197. --------Q-15DE25-----------------------------
  25198. INT 15 - DESQview v2.40+ - "GETDVPATH" - GET DESQview DIRECTORY
  25199.     AX = DE25h
  25200.     ES:DI -> 67-byte buffer for ASCIZ directory name
  25201. Return: ES:DI buffer filled with directory from which DESQview was started
  25202. BUG:    DV 2.42 does not place a terminating NUL at the end of the directory
  25203.       name, so if the buffer is not cleared to zeros before the call,
  25204.       there is no way to tell where the directory name ends.  This bug
  25205.       has been fixed in DV 2.52 (DV/X 1.02)
  25206. SeeAlso: AX=DE2Eh,INT 21/AH=47h
  25207. --------Q-15DE26-----------------------------
  25208. INT 15 - DESQview v2.40+ - "GETFOREGROUND" - GET KEYBOARD FOCUS
  25209.     AX = DE26h
  25210. Return: BX = segment of handle for task with keyboard focus
  25211. Note:    under DESQview/X, the X server always has the keyboard focus unless a
  25212.       "direct" window is active
  25213. SeeAlso: AX=DE2Fh,INT 2F/AX=DE0Ah
  25214. --------Q-15DE27-----------------------------
  25215. INT 15 - DESQview v2.50+ - "ADDINSTANCEDATA" - ADD PER-TASK SAVE/RESTORE AREA
  25216.     AX = DE27h
  25217.     BX = type
  25218.         0000h process
  25219.         0001h task
  25220.     ES:DI -> list of Instance Item Structures (see #0477)
  25221. Return: CF clear if successful
  25222.         AX = ???
  25223.         BX = ???
  25224.     CF set on error
  25225.         AX = error code???
  25226.         0004h invalid BX value
  25227. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  25228. SeeAlso: INT 2F/AX=DE08h,INT 2F/AX=DE09h
  25229.  
  25230. Format of DESQview Instance Item Structure [one element of list]:
  25231. Offset    Size    Description    (Table 0477)
  25232.  00h    WORD    length of data area DESQview should save and restore on context
  25233.           switches (0000h = end of list)
  25234.  02h    DWORD    pointer to area to be saved/restored
  25235. --------Q-15DE28-----------------------------
  25236. INT 15 U - DESQview v2.50+ - ???
  25237.     AX = DE28h
  25238.     BX = segment of ??? or 0000h for default
  25239.     ???
  25240. Return: ???
  25241. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  25242. SeeAlso: AX=DE2Ah
  25243. --------Q-15DE29BX0000-----------------------
  25244. INT 15 U - DESQview/X - ???
  25245.     AX = DE29h
  25246.     BX = 0000h
  25247.     ???
  25248. Return: CF clear if successful
  25249.         ???
  25250.     CF set on error
  25251. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  25252.     under DESQview 2.60, this function and all other subfunctions of
  25253.       AX=DE29h always return CF set, as they are unique to DESQview/X
  25254. --------Q-15DE29BX0001-----------------------
  25255. INT 15 U - DESQview/X - ???
  25256.     AX = DE29h
  25257.     BX = 0001h
  25258.     DX = segment of window handle
  25259. Return: CF clear if successful
  25260.         AX = ???
  25261.         DX = ???
  25262.     CF set on error
  25263. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  25264. --------Q-15DE29BX0002-----------------------
  25265. INT 15 U - DESQview/X - ???
  25266.     AX = DE29h
  25267.     BX = 0002h
  25268.     DX = segment of window handle
  25269. Return: CF clear if successful
  25270.         AX = ???
  25271.         DX = ???
  25272.     CF set on error
  25273. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  25274. --------Q-15DE29BX0003-----------------------
  25275. INT 15 U - DESQview/X - ???
  25276.     AX = DE29h
  25277.     BX = 0003h
  25278.     DX = segment of window handle
  25279. Return: CF clear if successful
  25280.         ???
  25281.     CF set on error
  25282. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  25283. --------Q-15DE29BX0004-----------------------
  25284. INT 15 U - DESQview/X - GET DISPLAY NAME
  25285.     AX = DE29h
  25286.     BX = 0004h
  25287.     CX = size of buffer in bytes
  25288.     DX = segment of window handle
  25289.     ES:DI -> buffer for display name
  25290. Return: CF clear if successful
  25291.         buffer filled with ASCIZ display name (truncated if necessary) or
  25292.           null string if no display
  25293.     CF set on error
  25294. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  25295.     the name ":0" refers to the local display
  25296. --------Q-15DE29BX0005-----------------------
  25297. INT 15 U - DESQview/X - ???
  25298.     AX = DE29h
  25299.     BX = 0005h
  25300.     ???
  25301. Return: CF clear if successful
  25302.         ???
  25303.     CF set on error
  25304. Note:    under DESQview 2.60, this function and all other subfunctions of
  25305.       AX=DE29h always return CF set, as they are unique to DESQview/X
  25306. --------Q-15DE2A-----------------------------
  25307. INT 15 - DESQview v2.50+ - "DISPATCHINTAFTERDOS" - INTERRUPT ANOTHER TASK
  25308.     AX = DE2Ah
  25309.     BX = segment of handle for task to interrupt or 0000h for caller
  25310.     DX:CX -> interrupt routine
  25311.     BP,SI,DI,DS,ES as required by interrupt routine
  25312. Return: nothing
  25313. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  25314.     this call is the same as AX=DE20h except that it will delay
  25315.       interrupting the specified task until after it has exited DOS
  25316. SeeAlso: AX=1021h,AX=DE20h
  25317. --------Q-15DE2B-----------------------------
  25318. INT 15 - DESQview v2.50+ - "OBJNEXT" - TRAVERSE OBJECT LIST
  25319.     AX = DE2Bh
  25320.     ES:DI -> starting object
  25321.         0000h:0000h for first object in list???
  25322. Return: AX = status
  25323.         0000h successful
  25324.         ES:DI -> next object of same type (window/non-window)
  25325.         0001h failed (ES:DI was not a valid handle)
  25326. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  25327.     there are two separate lists, one for window/task objects and one
  25328.       for all other objects
  25329. SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch
  25330. --------Q-15DE2C-----------------------------
  25331. INT 15 - DESQview v2.50+ - "WININFO" - GET WINDOW INFORMATION
  25332.     AX = DE2Ch
  25333.     DX = window information format version (0100h for DESQview 2.5x)
  25334.     BX = segment of window handle or 0000h for default
  25335.     ES:DI -> buffer for window information (see #0478)
  25336. Return: AX = status
  25337.         0000h successful
  25338. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  25339. SeeAlso: AX=1000h,AX=1016h,AX=DE01h,AX=DE2Bh
  25340.  
  25341. Format of DESQview window information:
  25342. Offset    Size    Description    (Table 0478)
  25343.  00h    BYTE    task flag: 00h window, 01h task
  25344.  01h    BYTE    process number if owner task
  25345.         00h if non-owner task
  25346.  02h    WORD    segment of owner's handle, 0000h if orphaned
  25347.  04h    WORD    mapping context (see #0342 at AX=1016h)
  25348.  06h    BYTE    task status (see #0479)
  25349.  07h    BYTE    unused
  25350.  08h    WORD    status bits (see #0480)
  25351.  0Ah    BYTE    01h if foreground-only window
  25352.  
  25353. (Table 0479)
  25354. Values for DESQview task status:
  25355.  00h    "Waiting" waiting for input
  25356.  01h    "Idle" keyboard poll limit reached
  25357.  03h    same as 01h
  25358.  04h    "Pausing" INT 15/AX=1000h pause called
  25359.  04h    DV/X direct: user did something to allow task switch
  25360.  05h    "ModeChg" video mode about to be changed
  25361.  06h    "ModeNtf" notify that video mode changed
  25362.  07h    "MoniCh" requested change to other monitor
  25363.  08h    "StartPgm" control relinquished to start new process
  25364.  09h    "MgrCan" made window manager CANCEL command
  25365.  0Ah    "Slicing" time slice expired
  25366.  0Bh    "Exit DOS" notify on DOS calls
  25367.  0Ch    "Enter DOS" process is re-entering DOS
  25368.  0Dh    "Terminate" INT 21/AH=4Ch or task freed
  25369.  0Eh    "BrkNxt" Control-Break pressed
  25370.  0Fh    "MgrCol" keyboard focus taken away
  25371.  10h    "PgmInt" interrupted by API call from another task
  25372.  11h    "BldOpen" call to INT 15/AX=DE01h
  25373.  
  25374. Bitfields for DESQview task status bits:
  25375. Bit(s)    Description    (Table 0480)
  25376.  6    task is freeing another task
  25377.  5    process is being created
  25378.  4    user suspended process
  25379.  3    process suspended itself
  25380.  2    process is resized direct window (suspended)
  25381.  1    process swapped out
  25382.  0    DESQview process
  25383. --------Q-15DE2D-----------------------------
  25384. INT 15 U - DESQview v2.50+ - GET/SET SOCKET HANDLER
  25385.     AX = DE2Dh
  25386.     CX = direction
  25387.         FFFFh set socket handler
  25388.         DX:BX -> FAR function for socket interface
  25389.             must be of the format described under INT 63"DESQview"
  25390.               at #3186
  25391.         other get socket handler
  25392.         Return: DX:BX -> socket handler (see #3186)
  25393. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  25394.     the "set" subfunction is normally called only by SOCKET.DVR
  25395. SeeAlso: AX=DE2Eh,INT 63"DESQview",#3186
  25396. --------Q-15DE2E-----------------------------
  25397. INT 15 U - DESQview v2.50+ - SOCKET API
  25398.     AX = DE2Eh
  25399.     DX:BX -> socket record (see #0482)
  25400.         0000h:0000h to create a new socket record
  25401. Return: CX = size of socket record in bytes
  25402.     DX:BX -> socket record which was used
  25403. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  25404.     socket records are allocated from common memory
  25405.     for Unix compatibility, each socket and connection on a socket is
  25406.       allocated a DOS file handle (referencing an SFT for NUL) which is
  25407.       used on various calls to specify which of possibly multiple
  25408.       connections is to be operated upon
  25409. SeeAlso: AX=DE2Dh,INT 61/AX=0001h/SF=0001h"VINES",INT 63"DESQview"
  25410.  
  25411. (Table 0481)
  25412. Values for DESQview/X socket API function number:
  25413.  0000h    initialize socket???
  25414.  0001h    "gethostname"
  25415.  0002h    "ioctl" check for input
  25416.  0003h    "sleep" delay for specified period
  25417.  0004h    "htons" convert word to network (big-endian) byte order
  25418.  0005h    "select"
  25419.  0006h    "bsd_close"/"so_close" close socket
  25420.  0007h    NOP
  25421.  0008h    "connect" initiate connection on socket
  25422.  0009h    "recv"/"recvfrom" read from socket
  25423.  000Ah    "socket"
  25424.  000Bh    ???
  25425.  000Ch    "gethostbyname"
  25426.  000Dh    "send"/"sendto" write to socket
  25427.  000Eh    ??? (does something to all connections for process)
  25428.  000Fh    "getpid" get process identifier
  25429.  0010h    "gettimeofday"
  25430.  0011h    "bind" assign name to socket
  25431.  0012h    "listen" listen for connections on socket
  25432.  0013h    "accept" accept connection on socket
  25433.  0014h    connect to X server
  25434.  0015h    "gethostbyaddr" get host information for an address
  25435.  0016h    "getprotobyname"
  25436.  0017h    "getprotobynumber"
  25437.  0018h    "getservbyname"
  25438.  0019h    "getservbyport"
  25439.  001Ah    "getsockname" determine name bound to socket
  25440.  001Bh    "getpeername" get name of connected peer
  25441.  001Ch    "getsockopt"/"setsockopt"
  25442.  001Dh    "so_exit"     close all sockets for calling process
  25443.  001Eh    "issock" determine whether file handle references socket
  25444.  001Fh    "so_attach" reattach previously detached socket
  25445.  0020h    "so_detach" temporarily detach socket
  25446.  0021h    "dvpath" get DESQview directory (see also AX=DE24h)
  25447.  0022h    "NewProc" start new application (see also AX=102Ch)
  25448.  0023h    "so_linkup"
  25449.  0024h    "CanonicalPath" canonicalize filename (see also INT 21/AH=60h)
  25450.  0025h    indirect INT 15h call
  25451.  0026h    Network Manager interface
  25452.  0027h    "so_unlink"    close connection from "so_linkup"
  25453.  0028h    "raisepriority"
  25454.  0029h    "lowerpriority"
  25455.  002Ah    "so_private" ???
  25456.  FFFFh    "NetExit" (appears to be a NOP)
  25457.  
  25458. Format of DESQview/X socket record:
  25459. Offset    Size    Description    (Table 0482)
  25460.  00h    WORD    signature F0ADh
  25461.  02h    WORD    function number (see #0481)
  25462.  04h    WORD    returned error code (see #0502)
  25463.  06h    WORD    maximum message size??? (usually 0400h)
  25464.  08h    WORD    PSP segment to use or 0000h if socket not valid
  25465.  0Ah    WORD    scratch space (JFT size)
  25466.  0Ch    DWORD    scratch space (JFT address)
  25467.  10h    DWORD    mailbox handle (initialized by function 0000h)
  25468.  14h    DWORD    timer object handle (initialized by function 0000h)
  25469. ---function 0000h---
  25470.  18h    WORD    (ret) ???
  25471. ---function 0001h---
  25472.  18h    WORD    (ret) status???
  25473.  1Ah 128 BYTEs    (ret) ASCIZ hostname (empty string if not on network)
  25474.  9Ah    WORD    maximum length of hostname to return
  25475. ---function 0002h---
  25476.  18h    WORD    (ret) status
  25477.  1Ah    WORD    socket's file handle
  25478.  1Ch    WORD    IOCTL function
  25479.         05h "FIONREAD" determine available input
  25480.         06h "FIONBIO" set blocking state of socket
  25481.  1Eh    WORD    (return, subfn 05h) number of bytes available for reading
  25482.         (call, subfn 06h) 0000h blocking, nonzero nonblocking
  25483. ---function 0003h---
  25484.  18h  2 BYTEs    unused
  25485.  1Ah    WORD    delay time in seconds
  25486. ---function 0004h---
  25487.  18h    WORD    (ret) result in network (big-endian) byte order
  25488.  1Ah    WORD    value to convert to network byte order
  25489. ---function 0005h---
  25490.  18h    WORD    (ret) number of handles meeting the specified conditions???
  25491.  1Ah    WORD    number of file handles in each bitset
  25492.  1Ch    DWORD    bitset of socket handles to check for readability
  25493.  20h    DWORD    bitset of socket handles to check for writability
  25494.  24h    DWORD    bitset of socket handles to check for errors
  25495.  28h    WORD    timeout in ??? or 0000h to block until some socket ready
  25496.  2Ah    DWORD    ???
  25497.  2Eh    DWORD    ???
  25498. ---function 0006h---
  25499.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  25500.  1Ah    WORD    socket's file handle
  25501. ---function 0008h---
  25502.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  25503.  1Ah    WORD    socket's file handle
  25504.  1Ch    WORD    0001h if socket name specified, 0000h if not
  25505.  1Eh    WORD    length of socket name
  25506.  20h  N BYTEs    name of socket to which to connect
  25507. ---function 0009h---
  25508.  18h    WORD    (ret) number of bytes actually read, 0000h if connection
  25509.             closed, or FFFFh on error
  25510.  1Ah    WORD    socket's file handle
  25511.  1Ch    WORD    number of bytes to read
  25512.  1Eh    WORD    flags
  25513.  20h    WORD    0000h if no source address desired
  25514.         0001h if source address is to be stored (datagram sockets)
  25515.  22h    WORD    length of source address
  25516.  24h 110 BYTEs    source address
  25517.  92h 1K BYTEs    buffer for data to be read
  25518. ---function 000Ah---
  25519.  18h    WORD    (ret) socket's file handle or FFFFh on error
  25520.  1Ah    WORD    address family (0001h,0002h)
  25521.  1Ch    WORD    socket type
  25522.  1Eh    WORD    protocol
  25523. ---function 000Bh---
  25524.  18h    WORD    (ret) 0001h if ??? or FFFFh on error
  25525.  1Ah    WORD    socket's file handle
  25526.  1Eh    WORD    (call) ???
  25527. ---function 000Ch---
  25528.  18h 128 BYTEs    ASCIZ hostname (special case if empty string or "unix")
  25529.  98h    ???    (ret) packed 'hostent' structure
  25530.  A2h    ???    (ret) ???
  25531. ---function 000Dh---
  25532.  18h    WORD    (ret) number of bytes actually written or FFFFh on error
  25533.  1Ah    WORD    socket's file handle
  25534.  1Ch    WORD    number of bytes to write
  25535.  1Eh    WORD    number of bytes to follow in subsequent writes???
  25536.  20h    WORD    flags
  25537.  22h    WORD    0000h if no destination specified, 0001h if destination present
  25538.  24h    WORD    0001h if broadcast message???, 0000h if not
  25539.         (ignored if no destination specified)
  25540.  26h    WORD    length of destination address
  25541.  28h 110 BYTEs    destination address
  25542.  96h 1K BYTEs    buffer containing data to be written
  25543. ---function 000Eh---
  25544.  no additional fields
  25545. ---function 000Fh---
  25546.  18h    DWORD    (ret) DESQview task handle of calling process
  25547. ---function 0010h---
  25548.  18h    DWORD    (ret) current time
  25549.  1Ch    DWORD    (ret) ???
  25550. ---function 0011h---
  25551.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  25552.  1Ah    WORD    socket's file handle
  25553.  1Ch    WORD    length of name
  25554.  1Eh  N BYTEs    buffer for socket name
  25555. ---function 0012h---
  25556.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  25557.  1Ah    WORD    socket's file handle
  25558.  1Ch    WORD    maximum backlog of pending connections allowed on socket
  25559. ---function 0013h---
  25560.  18h    WORD    (ret) file handle for new connection or FFFFh on error
  25561.  1Ah    WORD    listen()ing socket's file handle
  25562.  1Ch    WORD    (call) length of buffer for connecting entity's address
  25563.         (ret) actual length of address
  25564.  1Eh  N BYTEs    buffer for connecting entity's address (110 bytes???)
  25565. ---function 0014h---
  25566.  18h    WORD    (ret) socket's file handle or FFFFh on error
  25567.  1Ah  4 BYTEs    (ret) ???
  25568.  1Eh    WORD    (ret) ???
  25569.  20h    WORD    (ret) ???
  25570.  22h 256 BYTEs    ASCIZ X display name
  25571. 122h    ???
  25572. ---function 0015h---
  25573.  18h    WORD    (call) type of address??? (test for 0001h seen)
  25574.  1Ah    WORD    (call) length of buffer for host address
  25575.  1Ch 110 BYTEs    buffer containing ASCIZ host address
  25576.  8Ah    WORD    (ret) offset of official host name
  25577.  8Ch    WORD    (ret) offset of alias list???
  25578.  8Eh    WORD    (ret) address type???
  25579.  90h    WORD    (ret) length of an address in bytes???
  25580.  92h    WORD    (ret) offset of address???
  25581.  9Ah  N BYTEs    (ret) buffer for hostname, alias list, and host address
  25582. ---function 0016h---
  25583.  18h    ???    buffer for ASCIZ protocol name
  25584.  98h    ???
  25585. ---function 0017h---
  25586.  18h    WORD    (call) protocol number
  25587.  1Ah    WORD    (ret) ??? or 0001h
  25588. ---function 0018h---
  25589.  18h 128 BYTEs    buffer containing ASCIZ ???
  25590.  98h 128 BYTEs    buffer containing ASCIZ ???
  25591. 118h    WORD    (ret) ???
  25592. ---function 0019h---
  25593.  18h    WORD    port number
  25594.  1Ah 128 BYTEs    (call) ASCIZ host name
  25595.         (ret) packed servent strctures???
  25596.  9Ah    WORD    (ret) ???
  25597. ---function 001Ah---
  25598.  18h    WORD    (ret) 0000h if successful, FFFFh on error
  25599.  1Ah    WORD    socket's file handle
  25600.  1Ch    WORD    (call) length of buffer for socket name
  25601.         (ret) actual length of socket name
  25602.  1Eh  N BYTEs    buffer for socket name
  25603. ---function 001Bh---
  25604.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  25605.  1Ah    WORD    socket's file handle
  25606.  1Ch    WORD    (call) size of buffer for name
  25607.         (ret) actual size of name
  25608.  1Eh  N BYTEs    buffer for peer's name
  25609. ---function 001Ch---
  25610.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  25611.  1Ah    WORD    direction: 0000h to get, 0001h to set
  25612.  1Ch    WORD    socket's file handle
  25613.  1Eh    WORD    option level
  25614.  20h    WORD    option name
  25615.  22h    WORD    (call) length of buffer for option value
  25616.         (ret) actual length of option value
  25617.  24h  N BYTEs    buffer for option value
  25618. ---function 001Dh---
  25619.  no additional fields
  25620. ---function 001Eh---
  25621.  18h    WORD    (ret) status: 0000h ??? or 0001h ???
  25622.  1Ah    WORD    file handle which may or may not be a socket
  25623. ---function 001Fh---
  25624.  18h    WORD    (ret) file handle or FFFFh on error
  25625.  1Ah    DWORD    (call) pointer to Socket Context Record (see #0503) of a
  25626.             previously detached socket
  25627. ---function 0020h---
  25628.  18h    WORD    (ret) status: 0000h if successful or FFFFh on error
  25629.  1Ah    WORD    socket's file handle
  25630.  1Ch    DWORD    (ret) pointer to Socket Context Record (see #0503) for
  25631.             the file handle
  25632. ---function 0021h---
  25633.  18h 64 BYTEs    buffer for DESQview startup directory (see AX=DE25h)
  25634. ---function 0022h---
  25635.  18h    DWORD    (ret) task handle of new application
  25636.  1Ch    WORD    size of .DVP data
  25637.  1Eh 129 BYTEs    ASCIZ ???
  25638.  9Fh  N BYTEs    .DVP data (see #0353 at AX=102Ch)
  25639. ---function 0023h---
  25640.  18h    WORD    (ret) ??? or FFFFh on error
  25641.  1Ah    WORD    socket's file handle???
  25642. ---function 0024h---
  25643.  18h    WORD    (ret) DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
  25644.             0000h if successful
  25645.  1Ah 129 BYTEs    ASCIZ filename/pathname
  25646. 11Bh 129 BYTEs    ASCIZ canonicalized filename/pathname (see INT 21/AH=60h)
  25647. ---function 0025h---
  25648.  18h    WORD    value of AX
  25649.  1Ah    WORD    value of BX
  25650.  1Ch    WORD    (call) value of CX for call if AH value other than 12h
  25651.         (call) number of stack parameters if AH value is 12h
  25652.         (ret) returned CX for calls other than INT 15/AH=12h
  25653.  1Eh    WORD    value of DX
  25654.  20h    WORD    value of DI
  25655.  22h    WORD    value of SI
  25656.  24h    WORD    value of DS
  25657.  26h    WORD    value of ES
  25658.  28h    WORD    (ret) value of FLAGS after call
  25659.  2Ah  N DWORDs    (call) stack parameters for INT 15/AH=12h call
  25660.         (ret) stack results from INT 15/AH=12h call
  25661. ---function 0026h---
  25662.  18h    WORD    (call) Network Manager subfunction (see #0483)
  25663.         (ret) status??? (0000h on error)
  25664.  1Ah    WORD    (call) size of parameter data
  25665.         (ret) size of returned data
  25666.  1Ch  N BYTEs    (call) parameter data required by call (see #0484,#0485,#0501)
  25667.         (ret) result data (see #0494,#0495,#0500)
  25668. ---function 0027h---
  25669.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  25670.  1Ah    WORD    socket's file handle
  25671. ---functions 0028h,0029h---
  25672.  18h    WORD    (call) file handle for which to set priority low/high
  25673.             FFFFh to change calling task's priority
  25674. ---function 002Ah---
  25675.  no additional fields
  25676.  
  25677. (Table 0483)
  25678. Values for DESQview/X Network Manager subfunction:
  25679.  0004h    "so_exit"???
  25680.  0005h    "gethostbyname"
  25681.  0006h    "gethostname"
  25682.  0009h    "socket"
  25683.  000Dh    "gethostbyaddr"
  25684.  000Fh    "getprotobyname"
  25685.  0010h    get protocol name for protocol number
  25686.  0011h    "getservbyname"
  25687.  0012h    "getservbyport" (see #0487)
  25688.  0013h    "getsockname"??? (see #0488)
  25689.  0016h    "shutdown" (see #0489)
  25690.  0017h    kill Network Manager
  25691.  0018h    "getpeername"??? (see #0490)
  25692.  0019h    ??? (called by socket function 0000h) (see #0491)
  25693.  001Ah    ??? (see #0492)
  25694.  001Bh    "so_linkup" (see #0493)
  25695.  001Dh    "getnetstatus" get network services (see #0494)
  25696.  001Fh    "getpwuid"
  25697.  0020h    "getpwnam"
  25698.  0021h    "getpwvar"
  25699.  0022h    "crypt"
  25700.  0023h    "so_unlink"
  25701.  0024h    "getlogin" (see #0495)
  25702.  0028h    "sethostent"
  25703.  0029h    "gethostent"
  25704.  002Ah    "soaddhost"
  25705.  002Bh    "soupdatehost"
  25706.  002Ch    "sodeletehost"
  25707.  002Dh    "setservent"
  25708.  002Eh    "getservent"
  25709.  002Fh    "setpwent"
  25710.  0030h    "getpwent" (see #0496)
  25711.  0031h    "sethostpath" (see #0497)
  25712.  0032h    "endservent"
  25713.  0033h    "endhostent"
  25714.  0034h    "getnettype" get IP network number (see #0498)
  25715.  0035h    ??? (pops up Network Manager window)
  25716.  0037h    "getnettimeout" (see #0499)
  25717.  0038h    get machine name and IP address (see #0500)
  25718.  0039h    "getuid" (see #0501)
  25719. ---DV/X v2.0+ ---
  25720.  0041h    "deletepwnam"
  25721.  0045h    "renamepw"
  25722.  
  25723. Format of Function 0026h/Subfunction 000Fh data:
  25724. Offset    Size    Description    (Table 0484)
  25725.  00h  8 BYTEs    (ret) ???
  25726.  
  25727. Format of Function 0026h/Subfunction 0010h data:
  25728. Offset    Size    Description    (Table 0485)
  25729.  00h  2 BYTEs    (ret) ???
  25730.  02h    WORD    (ret) protocol number
  25731.  04h    WORD    (call) protocol number for which to get name
  25732.  06h    WORD    (ret) ???
  25733.  08h    var    (ret) ASCIZ protocol name
  25734.  N    var    (ret) ASCIZ protocol name
  25735.  
  25736. Format of Function 0026h/Subfunction 0011h data:
  25737. Offset    Size    Description    (Table 0486)
  25738.  00h  8 BYTEs    ???
  25739.  08h    var    (ret) ASCIZ protocol name
  25740.     var    (ret) ASCIZ ??? name
  25741.     var    (ret) ASCIZ ??? name
  25742.  
  25743. Format of Function 0026h/Subfunction 0012h data:
  25744. Offset    Size    Description    (Table 0487)
  25745.  00h  8 BYTEs    (ret) ???
  25746.  
  25747. Format of Function 0026h/Subfunction 0013h data:
  25748. Offset    Size    Description    (Table 0488)
  25749.  00h 116 BYTEs    (ret) ???
  25750.  
  25751. Format of Function 0026h/Subfunction 0016h ("shutdown") data:
  25752. Offset    Size    Description    (Table 0489)
  25753.  00h    WORD    (ret) shutdown status (0000h successful, FFFFh error)
  25754.  02h  4 BYTEs    (ret) ???
  25755.  04h    WORD    (call) socket handle
  25756.  06*h    WORD    (call) what (0 = receives, 1 = sends, 2 = both)
  25757.  
  25758. Format of Function 0026h/Subfunction 0018h data:
  25759. Offset    Size    Description    (Table 0490)
  25760.  00h 116 BYTEs    (ret) ???
  25761.  
  25762. Format of Function 0026h/Subfunction 0019h data:
  25763. Offset    Size    Description    (Table 0491)
  25764.  00h  4 BYTEs    (ret) ???
  25765.  04h    DWORD    (ret) task handle of ???
  25766.  
  25767. Format of Function 0026h/Subfunction 001Ah data:
  25768. Offset    Size    Description    (Table 0492)
  25769.  00h 38 BYTEs    (ret) ???
  25770.  
  25771. Format of Function 0026h/Subfunction 001Bh data:
  25772. Offset    Size    Description    (Table 0493)
  25773.  00h 10 BYTEs    (ret) ???
  25774.  
  25775. Format of Function 0026h/Subfunction 001Dh return data [array]:
  25776. Offset    Size    Description    (Table 0494)
  25777.  00h    WORD    ??? or FFFFh if end of array
  25778.  02h  7 BYTEs    ???
  25779.  09h 27 BYTEs    ASCIZ name of service
  25780.  
  25781. Format of Function 0026h/Subfunction 0024h return data:
  25782. Offset    Size    Description    (Table 0495)
  25783.  00h    var    ASCIZ username
  25784.  
  25785. Format of Function 0026h/Subfunction 0030h data:
  25786. Offset    Size    Description    (Table 0496)
  25787.  00h    WORD    (call) UID or 0000h for current user
  25788.         (ret) ???
  25789.  02h    WORD    (ret) UID
  25790.  04h  6 BYTEs    (ret) ???
  25791.  0Ah    var    (ret) ASCIZ username
  25792.     var    (ret) ASCIZ encrypted password
  25793.     var    (ret) ASCIZ initial ("home") directory
  25794.  
  25795. Format of Function 0026h/Subfunction 0031h ("sethostpath") data:
  25796. Offset    Size    Description    (Table 0497)
  25797.  00h   4 BYTEs    ???
  25798.  04h 144 BYTEs    ASCIZ ???
  25799.  
  25800. Format of Function 0026h/Subfunction 0034h data:
  25801. Offset    Size    Description    (Table 0498)
  25802.  00h  1-3 BYTEs IP network number of caller's machine (low byte first)
  25803.  
  25804. Format of Function 0026h/Subfunction 0037h ("getnettimeout") return data:
  25805. Offset    Size    Description    (Table 0499)
  25806.  00h    WORD    (ret) timeout
  25807.  02h  2 BYTEs    (ret) ???
  25808.  
  25809. Format of Function 0026h/Subfunction 0038h return data:
  25810. Offset    Size    Description    (Table 0500)
  25811.  00h    BYTE    ???
  25812.  01h  4 BYTEs    IP address
  25813.  05h    var    ASCIZ machine name
  25814.     ???
  25815.  
  25816. Format of Function 0026h/Subfunction 0039h ("getuid") return data:
  25817. Offset    Size    Description    (Table 0501)
  25818.  00h    WORD    user ID
  25819.  02h  2 BYTEs    ???
  25820. SeeAlso: #0497,#0500
  25821.  
  25822. (Table 0502)
  25823. Values for DESQview/X socket error code:
  25824.  0000h    successful
  25825.  0009h    "BADF" bad file handle
  25826.  000Ch    "ENOMEM" out of memory
  25827.  000Eh    "EFAULT" bad address
  25828.  0016h    "EINVAL" invalid argument
  25829.  0018h    "EMFILE" too many open files
  25830.  0020h    "EPIPE" ??? broken pipe
  25831.  0023h    "EWOULDBLOCK" operation cannot be completed at this time
  25832.  0024h    "EINPROGRESS" operation now in progress
  25833.  0026h    "ENOTSOCK" socket invalid
  25834.  0028h    "EMSGSIZE" message too long to send atomically
  25835.  002Ch    "ESOCKTNOSUPPORT" socket type not supported
  25836.  002Fh    "EAFNOSUPPORT" address family not supp. by protocol fam.
  25837.  0031h    "EDOM" argument too large
  25838.  0038h    "EISCONN" socket is already connected
  25839.  0039h    "ENOTCONN" socket is not connected
  25840.  
  25841. Format of DESQview/X Socket Context Record:
  25842. Offset    Size    Description    (Table 0503)
  25843.  00h    DWORD    pointer to next Socket Context Record, 0000h:0000h if last
  25844.  04h    WORD    SFT index for socket, 00FFh if not connected, FFFFh if detached
  25845.  06h    WORD    PSP segment of owner or 0000h
  25846.  08h    WORD    mapping context of owning window (see #0342 at AX=1016h)
  25847.  0Ah  2 BYTEs    ???
  25848.  0Ch    WORD    address family
  25849.  0Eh    WORD    socket type
  25850.  10h    WORD    protocol
  25851.  12h    WORD    socket state
  25852.         0001h created
  25853.         0002h bound
  25854.         0003h listening???
  25855.         0005h connected
  25856.  14h    DWORD    timer object handle
  25857.  18h    DWORD    object handle (mailbox???)
  25858.  1Ch    DWORD    object handle of parent of above object or 0000h:0000h
  25859.  20h    DWORD    pointer to ??? or 0000h
  25860.  24h  6 BYTEs    ???
  25861.  2Ah    WORD    file handle for socket or FFFFh
  25862.  2Ch  2 BYTEs    ???
  25863.  2Eh    WORD    nonzero if socket nonblocking
  25864. ---network connections only---
  25865.  30h  2 BYTEs    ???
  25866.  32h    WORD    ???
  25867.  34h  4 BYTEs    (big-endian) IP address of remote
  25868.  38h  6 BYTEs    ???
  25869. --------Q-15DE2F-----------------------------
  25870. INT 15 - DESQview v2.50+ - "VIDEONOTIFY" - HAS DIRECT WINDOW BEEN ACTIVE?
  25871.     AX = DE2Fh
  25872. Return: BX = status
  25873.         0001h keyboard focus has been given to a direct window since the
  25874.         last call
  25875.         0000h if not
  25876. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  25877.     Quarterdeck stated that this call would not be available under future
  25878.       versions of DESQview Classic, but it is still present in v2.60
  25879. --------Q-15DE30-----------------------------
  25880. INT 15 - DESQview v2.50+ - "GETDVXVERSION" - GET DESQview/X VERSION
  25881.     AX = DE30h
  25882. Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X
  25883. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  25884.     you must first check the DESQview version to verify that it is 2.50 or
  25885.       greater
  25886. SeeAlso: INT 21/AH=2Bh/CX=4445h
  25887. --------Q-15DE31-----------------------------
  25888. INT 15 - DESQview/X v1.10 - ???
  25889.     AX = DE31h
  25890.     CX = ???
  25891.         0000h ???
  25892.         nonzero ???
  25893.     ???
  25894. Return: ???
  25895. --------b-15DF-------------------------------
  25896. INT 15 - Juko UNIQUE UX BIOS - TURBO MODE CONTROL
  25897.     AH = DFh
  25898.     AL = function
  25899.         00h turn on Turbo mode
  25900.         01h turn off Turbo mode
  25901.         02h set Turbo mode according to hardware switch
  25902. SeeAlso: INT 13/AX=FFFFh
  25903. --------b-15E00F-----------------------------
  25904. INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH
  25905.     AX = E00Fh
  25906.     ES:BX -> start of 2nd processor's execution
  25907. Return: AL = status
  25908.         0Fh successful
  25909.         00h failure
  25910. SeeAlso: AX=E10Eh,AX=E200h
  25911. --------b-15E10E-----------------------------
  25912. INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH
  25913.     AX = E10Eh
  25914.     ES:BX -> start of 2nd processor's execution
  25915. Return: AL = status
  25916.         0Fh successful (halted)
  25917.         00h failure (not halted)
  25918. SeeAlso: AX=E00Fh,AX=E200h
  25919. --------b-15E200-----------------------------
  25920. INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE
  25921.     AX = E200h
  25922. Return: AX bit 15 set if 2nd processor available
  25923. SeeAlso: AX=E00Fh,AX=E10Eh
  25924. --------b-15E4-------------------------------
  25925. INT 15 - Tandy??? - ???
  25926.     AH = E4h
  25927.     AL = subfunction
  25928.         21h, 89h, 8Ah, 8Bh called by 386MAX v6.01
  25929.     DL = ???
  25930. Return: DL = 00h if successful???
  25931. Note:    the section of code in 386MAX which calls these functions also checks
  25932.       whether the ROM BIOS has both Tandy and Phoenix Technologies
  25933.       signatures if these calls fail; the Tandy 1000SL/TL BIOS does not
  25934.       support this function, however, returning the usual CF set/AH=86h for
  25935.       "unsupported function".
  25936. --------b-15E4-------------------------------
  25937. INT 15 - Compaq ROM BIOS 03/08/93 and newer - ???
  25938.     AH = E4h
  25939.     AL = subfunction
  25940.         00h get ???
  25941.         Return: CF clear
  25942.             AH = 00h
  25943.             CX = 0000h
  25944.             BX = ??? (read from [XBDA:0094h])
  25945.         01h,02h unsupported by this ROM version
  25946.         Return: CF set, AH = 86h
  25947.         80h,90h,A0h,B0h,C0h,D0h,E0h,F0h set ???
  25948.         Return: CF clear
  25949.             AH = 00h
  25950.             CX = 0000h
  25951.             BX = ???
  25952.         81h,91h,A1h,B1h,C1h,D1h,E1h,F1h unsupported by 3/8/93&4/8/93 ROMs
  25953.         Return: CF set, AH = 86h
  25954. Notes:    functions 80h/90h/etc. are not supported by the 4/8/93 EISA System ROM
  25955.     these functions are not supported by the 7/26/93 LTE Lite 386 ROM
  25956. --------b-15E800-----------------------------
  25957. INT 15 - Compaq Contura - GET ???
  25958.     AX = E800h
  25959. Return: AX = 0000h
  25960.     BH = 00h
  25961.     BL = ??? (read from port 0C7Ch)
  25962.     CH = ???
  25963.     CL = ???
  25964.     DX = 0000h
  25965. Note:    also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
  25966. --------b-15E800-----------------------------
  25967. INT 15 - Compaq Contura Aero, Contura 400 - GET SYSTEM MODEL CODE???
  25968.     AX = E800h
  25969.     BX = ??? (0000h)
  25970. Return: CF clear if successful
  25971.         BH = 02h
  25972.         BL = submodel??? (0Ch,0Dh,34h,38h,40h,44h,48h,64h,68h)
  25973.     CF set on error
  25974.     others???
  25975. Notes:    used by Compaq's SOFTPAQ number 0937 EPPBIOS.SYS to determine whether
  25976.       the Enhanced Parallel Port expected by that driver is available
  25977.     used by Compaq's SOFTPAW number 0856 VOLCTRL.EXE to determine whether
  25978.       volume control hardware expected by that driver is available
  25979. --------b-15E800-----------------------------
  25980. INT 15 - Compaq Prolinea - GET ???
  25981.     AX = E800h
  25982.     BX = ??? (1369h)
  25983. Return: BH = 01h
  25984.     BL = ???
  25985.     others???
  25986. Note:    used by Compaq's SOFTPAQ number 0718 INT10_04.SYS to determine whether
  25987.       the fix that driver applies is required (will not install if BX on
  25988.       return is other than 010Eh or 010Fh)
  25989. SeeAlso: AX=E802h
  25990. --------b-15E801-----------------------------
  25991. INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS
  25992.     AX = E801h
  25993. Return: CF clear if successful
  25994.         AX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
  25995.         BX = extended memory above 16M, in 64K blocks
  25996.         CX = configured memory 1M to 16M, in K
  25997.         DX = configured memory above 16M, in 64K blocks
  25998.     CF set on error
  25999. Notes:    supported by the A03 level (6/14/94) and later XPS P90 BIOSes, as well
  26000.       as the Compaq Contura, 3/8/93 DESKPRO/i, and 7/26/93 LTE Lite 386 ROM
  26001.       BIOS
  26002.     supported by AMI BIOSes dated 8/23/94 or later
  26003.     this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is
  26004.       used as a fall-back by newer versions if AX=E820h is not supported
  26005. SeeAlso: AH=8Ah"Phoenix",AX=E802h,AX=E820h,AX=E881h"Phoenix"
  26006. --------b-15E802-----------------------------
  26007. INT 15 - Compaq Contura - GET ???
  26008.     AX = E802h
  26009. Return: CF clear
  26010.     AX = 0000h
  26011.     BX = ???
  26012.     CX = 0000h
  26013. Note:    this function is also supported by the LTE Lite 25c, 25E, and 486; not
  26014.       supported by LTE Lite 20 and 25.
  26015. SeeAlso: AX=E801h"Phoenix"
  26016. --------b-15E820-----------------------------
  26017. INT 15 - newer BIOSes - GET SYSTEM MEMORY MAP
  26018.     AX = E820h
  26019.     EAX = 0000E820h
  26020.     EDX = 534D4150h ('SMAP')
  26021.     EBX = continuation value or 00000000h to start at beginning of map
  26022.     ECX = size of buffer for result, in bytes (should be >= 20 bytes)
  26023.     ES:DI -> buffer for result (see #0505)
  26024. Return: CF clear if successful
  26025.         EAX = 534D4150h ('SMAP')
  26026.         ES:DI buffer filled
  26027.         EBX = next offset from which to copy or 00000000h if all done
  26028.         ECX = actual length returned in bytes
  26029.     CF set on error
  26030.         AH = error code (86h) (see #0422 at INT 15/AH=80h)
  26031. Notes:    originally introduced with the Phoenix BIOS v4.0, this function is
  26032.       now supported by most newer BIOSes, since various versions of Windows
  26033.       call it to find out about the system memory
  26034.     a maximum of 20 bytes will be transferred at one time, even if ECX is
  26035.       higher; some BIOSes (e.g. Award Modular BIOS v4.50PG) ignore the
  26036.       value of ECX on entry, and always copy 20 bytes
  26037.     some BIOSes expect the high word of EAX to be clear on entry, i.e.
  26038.       EAX=0000E820h
  26039.     if this function is not supported, an application should fall back
  26040.       to AX=E802h, AX=E801h, and then AH=88h
  26041.     the BIOS is permitted to return a nonzero continuation value in EBX
  26042.       and indicate that the end of the list has already been reached by
  26043.       returning with CF set on the next iteration
  26044.     this function will return base memory and ISA/PCI memory contiguous
  26045.       with base memory as normal memory ranges; it will indicate
  26046.       chipset-defined address holes which are not in use and motherboard
  26047.       memory-mapped devices, and all occurrences of the system BIOS as
  26048.       reserved; standard PC address ranges will not be reported
  26049. SeeAlso: AH=C7h,AX=E801h"Phoenix",AX=E881h,MEM xxxxh:xxx0h"ACPI"
  26050.  
  26051. Format of Phoenix BIOS system memory map address range descriptor:
  26052. Offset    Size    Description    (Table 0504)
  26053.  00h    QWORD    base address
  26054.  08h    QWORD    length in bytes
  26055.  10h    DWORD    type of address range (see #0505)
  26056.  
  26057. (Table 0505)
  26058. Values for System Memory Map address type:
  26059.  01h    memory, available to OS
  26060.  02h    reserved, not available (e.g. system ROM, memory-mapped device)
  26061.  03h    ACPI Reclaim Memory (usable by OS after reading ACPI tables)
  26062.  04h    ACPI NVS Memory (OS is required to save this memory between NVS
  26063.       sessions)
  26064.  other    not defined yet -- treat as Reserved
  26065. SeeAlso: #0504
  26066. --------b-15E881-----------------------------
  26067. INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS (32-bit)
  26068.     AX = E881h
  26069. Return: CF clear if successful
  26070.         EAX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
  26071.         EBX = extended memory above 16M, in 64K blocks
  26072.         ECX = configured memory 1M to 16M, in K
  26073.         EDX = configured memory above 16M, in 64K blocks
  26074.     CF set on error
  26075. Notes:    supported by AMI BIOSes dated 8/23/94 or later
  26076.     this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is
  26077.       used as a fall-back by newer versions if AX=E820h is not supported
  26078. SeeAlso: AX=E801h"Phoenix",AX=E820h"Phoenix"
  26079. --------m-15F200CX454D-----------------------
  26080. INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALIZATION CHECK ???
  26081.     AX = F200h
  26082.     CX = 454Dh
  26083. Return: CF clear if hardware already initialised
  26084.         BX = upper RAM areas in use
  26085.         bit 0: C000-C3FF
  26086.         bit 1: C400-C7FF
  26087.         ...
  26088.         bit 11: EC00-EFFF
  26089.     CF set if hardware not initialised yet
  26090. --------B-1600-------------------------------
  26091. INT 16 - KEYBOARD - GET KEYSTROKE
  26092.     AH = 00h
  26093. Return: AH = BIOS scan code
  26094.     AL = ASCII character
  26095. Notes:    on extended keyboards, this function discards any extended keystrokes,
  26096.       returning only when a non-extended keystroke is available
  26097.     the BIOS scan code is usually, but not always, the same as the hardware
  26098.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  26099.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  26100.       differs for shifted special keys
  26101.     some (older) clone BIOSes do not discard extended keystrokes and manage
  26102.       function AH=00h and AH=10h the same
  26103.     the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
  26104.       keystrokes (same as with functions 10h and 20h), but will always
  26105.       translate prefix E0h to 00h. This allows old programs to use extended
  26106.       keystrokes and should not cause compatibility problems
  26107. SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,AX=AF4Dh"K3PLUS",INT 18/AH=00h
  26108. --------B-1601-------------------------------
  26109. INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
  26110.     AH = 01h
  26111. Return: ZF set if no keystroke available
  26112.     ZF clear if keystroke available
  26113.         AH = BIOS scan code
  26114.         AL = ASCII character
  26115. Note:    if a keystroke is present, it is not removed from the keyboard buffer;
  26116.       however, any extended keystrokes which are not compatible with 83/84-
  26117.       key keyboards are removed by IBM and most fully-compatible BIOSes in
  26118.       the process of checking whether a non-extended keystroke is available
  26119.     some (older) clone BIOSes do not discard extended keystrokes and manage
  26120.       function AH=00h and AH=10h the same
  26121.     the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
  26122.       keystrokes (same as with functions 10h and 20h), but will always
  26123.       translate prefix E0h to 00h. This allows old programs to use extended
  26124.       keystrokes and should not cause compatibility problems
  26125. SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h
  26126. --------B-1602-------------------------------
  26127. INT 16 - KEYBOARD - GET SHIFT FLAGS
  26128.     AH = 02h
  26129. Return: AL = shift flags (see #0506)
  26130.     AH destroyed by many BIOSes
  26131. SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h,MEM 0040h:0017h
  26132.  
  26133. Bitfields for keyboard shift flags:
  26134. Bit(s)    Description    (Table 0506)
  26135.  7    Insert active
  26136.  6    CapsLock active
  26137.  5    NumLock active
  26138.  4    ScrollLock active
  26139.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  26140.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  26141.  1    left shift key pressed
  26142.  0    right shift key pressed
  26143. SeeAlso: #0511,#3414,MEM 0040h:0017h,#M010
  26144. --------B-1603-------------------------------
  26145. INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
  26146.     AH = 03h
  26147.     AL = subfunction
  26148.         00h set default delay and rate (PCjr and some PS/2)
  26149.         01h increase delay before repeat (PCjr)
  26150.         02h decrease repeat rate by factor of 2 (PCjr)
  26151.         03h increase delay and decrease repeat rate (PCjr)
  26152.         04h turn off typematic repeat (PCjr and some PS/2)
  26153.         05h set repeat rate and delay (AT,PS)
  26154.         BH = delay value (00h = 250ms to 03h = 1000ms)
  26155.         BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
  26156.         06h get current typematic rate and delay (newer PS/2s)
  26157.         Return: BL = repeat rate (above)
  26158.             BH = delay (above)
  26159. Return: AH destroyed by many BIOSes
  26160. Note:    use INT 16/AH=09h to determine whether some of the subfunctions are
  26161.       supported
  26162. SeeAlso: INT 16/AH=09h,AH=29h"HUNTER",AH=2Ah"HUNTER"
  26163. --------B-1604-------------------------------
  26164. INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
  26165.     AH = 04h
  26166.     AL = keyclick state
  26167.         00h off
  26168.         01h on
  26169. Return: AH destroyed by many BIOSes
  26170. SeeAlso: AH=03h,AH=04h"K3PLUS"
  26171. --------b-1604-------------------------------
  26172. INT 16 - Tandy 2000 - KEYBOARD - FLUSH KEYBOARD BUFFER
  26173.     AH = 04h
  26174. Note:    this interrupt is identical to INT 51 on the Tandy 2000
  26175. SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=05h"Tandy 2000"
  26176. SeeAlso: INT 51"Tandy 2000"
  26177. --------K-1604-------------------------------
  26178. INT 16 - K3PLUS v6.22+ - SET KEYCLICK
  26179.     AH = 04h
  26180.     AL = keyclick state
  26181.         00h keyclick off, leave loudness setting unchanged
  26182.         01h keyclick on, leave loudness setting unchanged
  26183.         else
  26184.            bit 0: keyclick enabled if set
  26185.            bits 7-1: new keyclick loudness (non-zero)
  26186. Return: AH destroyed by many BIOSes
  26187. Note:    Applications which try to set a new loudness, but are unsure of the
  26188.       results of other INT 16/AH=04h implementations, should set the new
  26189.       loudness first, and then call this function again with AL=01h or
  26190.       AL=00h
  26191. SeeAlso: AH=03h,AH=04h"KEYBOARD",AX=AF4Dh
  26192. --------B-1605-------------------------------
  26193. INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
  26194.     AH = 05h
  26195.     CH = BIOS scan code
  26196.     CL = ASCII character
  26197. Return: AL = status
  26198.         00h if successful
  26199.         01h if keyboard buffer full
  26200.     AH destroyed by many BIOSes
  26201. Notes:    under DESQview, a number of "keystrokes" invoke specific
  26202.       DESQview-related actions when they are read from the keyboard
  26203.       buffer (see #0507)
  26204.     similarly, some "keystrokes" invoke special functions on the HP 100LX
  26205.       and HP 200LX (see #0508)
  26206. SeeAlso: AH=00h,AH=25h"K3",AH=71h,AX=AF4Dh,AH=FFh,INT 15/AX=DE10h
  26207. SeeAlso: MEM 0040h:001Eh
  26208.  
  26209. (Table 0507)
  26210. Values for pseudo-keystrokes for DESQview:
  26211.  38FBh or FB00h    switch to next window (only if main menu already popped up)
  26212.  38FCh or FC00h    pop up DESQview main menu
  26213.  38FEh or FE00h    close the current window
  26214.  38FFh or FF00h    pop up DESQview learn menu
  26215.  
  26216. (Table 0508)
  26217. Values for pseudo-keystrokes for HP 100LX/200LX:
  26218.  EE00h    pop up topcard display and set other system manager applications
  26219.       into sleep mode
  26220. --------B-1605-------------------------------
  26221. INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
  26222.     AH = 05h
  26223.     AL = function
  26224.         01h set keyboard layout to French
  26225.         02h set keyboard layout to German
  26226.         03h set keyboard layout to Italian
  26227.         04h set keyboard layout to Spanish
  26228.         05h set keyboard layout to UK
  26229.         80h check if function supported
  26230.         Return: AL <> 80h if supported
  26231. Return: ???
  26232.     AH destroyed by many BIOSes
  26233. Note:    this function is called by the DOS 3.2 KEYBxx.COM
  26234. SeeAlso: AH=92h,AH=A2h,AX=AF4Dh
  26235. --------b-1605-------------------------------
  26236. INT 16 - Tandy 2000 - KEYBOARD - RESET KEYBOARD
  26237.     AH = 05h
  26238. Desc:    reset the keyboard and flush the keyboard buffer
  26239. Note:    this interrupt is identical to INT 51 on the Tandy 2000
  26240. SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=03h,INT 51"Tandy 2000"
  26241. --------B-1609-------------------------------
  26242. INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
  26243.     AH = 09h
  26244. Return: AL = supported keyboard functions (see #0509)
  26245.     AH destroyed by many BIOSes
  26246. Note:    this function is only available if bit 6 of the second feature byte
  26247.       returned by INT 15/AH=C0h is set (see #0433)
  26248. SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h
  26249.  
  26250. Bitfields for supported keyboard functions:
  26251. Bit(s)    Description    (Table 0509)
  26252.  7    reserved
  26253.  6    INT 16/AH=20h-22h supported (122-key keyboard support)
  26254.  5    INT 16/AH=10h-12h supported (enhanced keyboard support)
  26255.  4    INT 16/AH=0Ah supported
  26256.  3    INT 16/AX=0306h supported
  26257.  2    INT 16/AX=0305h supported
  26258.  1    INT 16/AX=0304h supported
  26259.  0    INT 16/AX=0300h supported
  26260. SeeAlso: #0435
  26261. --------K-160A-------------------------------
  26262. INT 16 - KEYBOARD - GET KEYBOARD ID
  26263.     AH = 0Ah
  26264. Return: BX = keyboard ID (see #0510)
  26265.     AH destroyed by many BIOSes
  26266. Notes:    check return value from AH=09h to determine whether this function is
  26267.       supported
  26268.     this function is also supported by the K3PLUS v6.00+ INT 16 BIOS
  26269.       replacement
  26270. SeeAlso: AH=09h,AX=AF4Dh,MEM 0040h:00C2h"AMI"
  26271.  
  26272. (Table 0510)
  26273. Values for keyboard ID:
  26274.  0000h    no keyboard attached
  26275.  41ABh    Japanese "G" keyboard (translate mode)
  26276.     MF2 Keyboard (usually in translate mode)
  26277.  54ABh    Japanese "P" keyboard (translate mode)
  26278.  83ABh    Japanese "G" keyboard (pass-through mode)
  26279.     MF2 Keyboard (pass-through mode)
  26280.  84ABh    Japanese "P" keyboard (pass-through mode)
  26281.  90ABh    old Japanese "G" keyboard
  26282.  91ABh    old Japanese "P" keyboard
  26283.  92ABh    old Japanese "A" keyboard
  26284. --------B-1610-------------------------------
  26285. INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
  26286.     AH = 10h
  26287. Return: AH = BIOS scan code
  26288.     AL = ASCII character
  26289. Notes:    if no keystroke is available, this function waits until one is placed
  26290.       in the keyboard buffer
  26291.     the BIOS scan code is usually, but not always, the same as the hardware
  26292.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  26293.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  26294.       differs for shifted special keys.
  26295.     unlike AH=00h, this function does not discard extended keystrokes
  26296.     INT 16/AH=09h can be used to determine whether this function is
  26297.       supported, but only on later model PS/2s
  26298. SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h,MEM 0040h:0019h,MEM 0040h:001Eh
  26299. --------B-1611-------------------------------
  26300. INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
  26301.     AH = 11h
  26302. Return: ZF set if no keystroke available
  26303.     ZF clear if keystroke available
  26304.         AH = BIOS scan code
  26305.         AL = ASCII character
  26306. Notes:    if a keystroke is available, it is not removed from the keyboard buffer
  26307.     unlike AH=01h, this function does not discard extended keystrokes
  26308.     some versions of the IBM BIOS Technical Reference erroneously report
  26309.       that CF is returned instead of ZF
  26310.     INT 16/AH=09h can be used to determine whether this function is
  26311.       supported, but only on later model PS/2s
  26312. SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h
  26313. --------B-1612-------------------------------
  26314. INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
  26315.     AH = 12h
  26316. Return: AL = shift flags 1 (same as returned by AH=02h) (see #0511)
  26317.     AH = shift flags 2 (see #0512)
  26318. Notes:    AL bit 3 set only for left Alt key on many machines
  26319.     AH bits 7 through 4 always clear on a Compaq SLT/286
  26320.     INT 16/AH=09h can be used to determine whether this function is
  26321.       supported, but only on later model PS/2s
  26322.     many BIOSes (including at least some versions of Phoenix and AMI) will
  26323.       destroy AH on return from functions higher than AH=12h, returning
  26324.       12h less than was in AH on entry (due to a chain of DEC/JZ
  26325.       instructions)
  26326. SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh,MEM 0040h:0017h
  26327.  
  26328. Bitfields for keyboard shift flags 1:
  26329. Bit(s)    Description    (Table 0511)
  26330.  7    Insert active
  26331.  6    CapsLock active
  26332.  5    NumLock active
  26333.  4    ScrollLock active
  26334.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  26335.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  26336.  1    left shift key pressed
  26337.  0    right shift key pressed
  26338. SeeAlso: #0506,#0512,MEM 0040h:0017h,#M010
  26339.  
  26340. Bitfields for keyboard shift flags 2:
  26341. Bit(s)    Description    (Table 0512)
  26342.  7    SysReq key pressed (SysReq is often labeled SysRq)
  26343.  6    CapsLock pressed
  26344.  5    NumLock pressed
  26345.  4    ScrollLock pressed
  26346.  3    right Alt key pressed
  26347.  2    right Ctrl key pressed
  26348.  1    left Alt key pressed
  26349.  0    left Ctrl key pressed
  26350. SeeAlso: #0511,MEM 0040h:0018h,#M011
  26351. --------J-1613-------------------------------
  26352. INT 16 - DOS/V - DOUBLE-BYTE CHARACTER SET SHIFT CONTROL
  26353.     AH = 13h
  26354.     AL = function
  26355.         00h set shift status
  26356.         DX = shift status (see #0513), must preserve internal status
  26357.               bits
  26358.         01h get shift status
  26359.         Return: DX = current shift status (see #0513)
  26360. Note:    these functions are supplied by the Japanese Front-End Processor
  26361. SeeAlso: AH=14h,INT 21/AX=6301h
  26362.  
  26363. Bitfields for DOS/V shift status:
  26364. Bit(s)    Description    (Table 0513)
  26365.  0    full-size rather than half-size
  26366.  2-1    character input mode
  26367.     00 alphanumeric, 01 Katakana, 10 Hiragana, 11 unused
  26368.  5-3    internal status
  26369.  6    Romaji enabled
  26370.  7    Katakana to Kanji conversion enabled
  26371.  15-8    internal status
  26372. --------J-1614-------------------------------
  26373. INT 16 - DOS/V - SHIFT STATUS DISPLAY CONTROL
  26374.     AH = 14h
  26375.     AL = function
  26376.         00h enable display
  26377.         01h disable display
  26378.         02h get display state
  26379.         Return: AL = current state (00h enabled, 01h disabled)
  26380. Desc:    control the screen-bottom shift status row(s) for the Japanese
  26381.       Front-End Processor
  26382. SeeAlso: AH=13h,INT 10/AH=19h,INT 10/AH=1Dh
  26383. --------B-1620-------------------------------
  26384. INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only)
  26385.     AH = 20h
  26386. Return: AH = BIOS scan code (see AH=10h)
  26387.     AL = ASCII character
  26388. Note:    use AH=09h to determine whether this function is supported
  26389. SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h
  26390. --------b-1620------------------------------------
  26391. INT 16 - HUNTER 16 - SET TEMPORARY SHIFT
  26392.     AH = 20h
  26393.     AL = shift status (see #0514)
  26394. Notes:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  26395.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  26396.     the user can override the specified settings by pressing the keys
  26397.  
  26398. Bitfields for HUNTER 16 shift status:
  26399. Bit(s)    Description    (Table 0514)
  26400.  4    Scroll Lock on
  26401.  5    Num Lock on
  26402.  6    Caps Lock on
  26403. --------K-1620-------------------------------
  26404. INT 16 O - K3 v1.5x, K3PLUS v5.xx - GET EXTENDED BUFFER STATE
  26405.     AH = 20h
  26406. Return: AX = K3 version
  26407.     ES:BX -> extended keyboard buffer start
  26408.     ES:DX -> extended keyboard buffer end
  26409.     ES:SI -> next keystroke
  26410.     ES:DI -> last keystroke in buffer
  26411.     CX = number of keystrokes in buffer
  26412. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  26413.       Frinke, originally based on the K3 extended German keyboard driver
  26414.       by Martin Gerdes published in c't magazine in 1988
  26415. Note:    this function was normally unsupported under K3PLUS v6.00-v6.22 and
  26416.       is no longer supported by v6.30+; use AX=AF20h instead
  26417. SeeAlso: AH=25h"K3",AX=AF20h,INT 2F/AX=D44Fh/BX=0000h,INT 2F/AX=ED58h
  26418. --------B-1621-------------------------------
  26419. INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only)
  26420.     AH = 21h
  26421. Return: ZF set if no keystroke available
  26422.     ZF clear if keystroke available
  26423.         AH = BIOS scan code
  26424.         AL = ASCII character
  26425. Notes:    use AH=09h to determine whether this function is supported
  26426.     some versions of the IBM BIOS Technical Reference erroneously report
  26427.       that CF is returned instead of ZF
  26428.     K3PLUS v6.00+ supports this function as an alias of AH=11h
  26429. SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h
  26430. --------b-1621------------------------------------
  26431. INT 16 - HUNTER 16 - CONTROL SHIFT KEYS
  26432.     AH = 21h
  26433.     AL = shift keys to control (see #0506)
  26434.     BL = shift state for disabled keys
  26435. Note:    If a bit in AL is set the key is disabled and set to the state of the
  26436.       corresponding bit in BL
  26437. SeeAlso: AH=20h"HUNTER",AH=22h"HUNTER"
  26438. --------B-1622-------------------------------
  26439. INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only)
  26440.     AH = 22h
  26441. Return: AL = shift flags 1 (see #0511)
  26442.     AH = shift flags 2 (see #0512)
  26443. Notes:    use AH=09h to determine whether this function is supported
  26444.     K3PLUS v6.00+ supports this function as an alias of AH=12h
  26445. SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h
  26446. --------b-1622------------------------------------
  26447. INT 16 - HUNTER 16 - CONTROL CTRL-ALT-DEL
  26448.     AH = 22h
  26449.     AL = new Ctrl-Alt-Del state (00h enabled, nonzero disabled)
  26450.     BX = 0708h
  26451.     CX = 0910h
  26452.     DX = 1112h
  26453. Return: AL = 00h if successful
  26454. SeeAlso: AH=21h"HUNTER",AH=23h"HUNTER",AH=2Ah
  26455. --------b-1623------------------------------------
  26456. INT 16 - HUNTER 16 - CONTROL EMERGENCY BREAKOUT
  26457.     AH = 23h
  26458.     AL = new state of breakout (00h enabled, nonzero disabled)
  26459.     BX = 0708h
  26460.     CX = 0910h
  26461.     DX = 1112h
  26462. Return: AL = 00h if successful
  26463. Desc:    Enables or disables the emergency breakout feature, where the
  26464.       Hunter 16 at power on checks whether the X and P keys are pressed.
  26465.       If so the machine will boot rather than continue the running program
  26466. SeeAlso: AH=22h"HUNTER"
  26467. --------b-1624------------------------------------
  26468. INT 16 - HUNTER 16 - REDEFINE KEY CODES
  26469.     AH = 24h
  26470.     AL = Matrix Code (see #0515)
  26471.     BL = new Key code
  26472. Return: AL = status (00h successful, nonzero failed)
  26473. SeeAlso: AH=2Bh,AH=2Ch
  26474.  
  26475. (Table 0515)
  26476. Values for HUNTER 16 Matrix Code:
  26477.  Code  Key        Code    Key        Code    Key
  26478.  00h   Esc key        1Eh    Space        3Bh    L
  26479.  01h   1        21h    0        3Ch    ,
  26480.  02h   Q        22h    -        3Eh    Right shift
  26481.  03h   Tab        23h    '        42h    8
  26482.  04h   Num Lock        24h    Keypad 4    43h    7
  26483.  05h   \        25h    Enter        44h    U
  26484.  08h   LShift        26h    Keypad 7    45h    I
  26485.  09h   Ctrl        27h    .        46h    J
  26486.  0Ah   "Paw" key    28h    Keypad 1    47h    K
  26487.  0Bh   2        29h    Keypad 0    48h    M
  26488.  0Ch   W        2Ch    =        49h    N
  26489.  0Dh   A        2Dh    Backspace    4Ah    /
  26490.  0Eh   S        2Eh    Keypad 8    4Dh    6
  26491.  0Fh   Z        2Fh    Keypad 9    4Eh    5
  26492.  11h   Alt        30h    Keypad 5    4Fh    T
  26493.  16h   4        31h    Keypad 6    50h    Y
  26494.  17h   3        32h    Keypad 2    51h    G
  26495.  18h   E        33h    Keypad 3    52h    H
  26496.  19h   R        34h    Keypad .    53h    B
  26497.  1Ah   D        37h    9        54h    V
  26498.  1Bh   F        38h    O        55h    #
  26499.  1Ch   X        39h    P        58h    Pwr
  26500.  1Dh   C        3Ah    ;        59h    Shift Pwr
  26501. --------b-1625------------------------------------
  26502. INT 16 - HUNTER 16 - RESET KEYBOARD
  26503.     AH = 25h
  26504. Return: AL = 00h
  26505. Desc:    restores the standard keyboard layout after any remapping
  26506. SeeAlso: AH=24h,AH=2Bh,AH=2Ch
  26507. --------K-1625-------------------------------
  26508. INT 16 O - K3 v1.5x, K3PLUS v5.xx - COPY INTO EXTENDED BUFFER
  26509.     AH = 25h
  26510.     CX = number of keystrokes to copy
  26511.     ES:SI -> buffer containing keystrokes
  26512. Return: CF clear if successful
  26513.     CF set on error (i.e. buffer full)
  26514.         CX = number of keystrokes NOT transferred
  26515.         ES:SI -> first keystroke not transferred
  26516. Note:    this function was normally unsupported under K3PLUS v6.00-v6.22 and
  26517.       is no longer supported by v6.30+; use AX=AF25h instead
  26518. SeeAlso: AH=05h,AH=20h"K3",AX=AF25h,INT 2F/AX=D44Fh/BX=0001h
  26519. --------b-1626------------------------------------
  26520. INT 16 - HUNTER 16 - CONTROL KEYCLICK
  26521.     AH = 26h
  26522.     AL = new state of keyclicks (00h disabled, 01h enabled)
  26523. Return: AL = 00h
  26524. SeeAlso: AH=2Ah
  26525. --------b-1627------------------------------------
  26526. INT 16 - HUNTER 16 - CONTROL SCREEN DUMP AREA
  26527.     AH = 27h
  26528.     AL = what to dump
  26529.         00h whole (virtual) window
  26530.         01h LCD window only
  26531. Return: AL = 00h
  26532. Desc:    control whether printscren dumps the whole 80x25 screen or only the
  26533.       part displayed in the LCD window
  26534. Note:    the Hunter 16 has a 240x64 LCD display which serves as a window into
  26535.       a 640x200 virtual screen
  26536. --------b-1629------------------------------------
  26537. INT 16 - HUNTER 16 - GET KEY REPEAT
  26538.     AH = 29h
  26539. Return: BL = Typematic rate (characters per second) (see #0516)
  26540.     BH = delay (00h = 250ms, 01h = 500ms, 02h = 750ms, 03h = 1s)
  26541. SeeAlso: AH=03h,AH=2Ah
  26542.  
  26543. (Table 0516)
  26544. Values for HUNTER 16 Typematic rate:
  26545.  00h    30.0     08h    15.0     10h    7.5     18h    3.7
  26546.  01h    26.7     09h    13.3     11h    6.7     19h    3.3
  26547.  02h    24.0     0Ah    12.0     12h    6.0     1Ah    3.0
  26548.  03h    21.8     0Bh    10.9     13h    5.5     1Bh    2.7
  26549.  04h    20.0     0Ch    10.0     14h    5.0     1Ch    2.5
  26550.  05h    18.5     0Dh     9.2     15h    4.6     1Dh    2.3
  26551.  06h    17.1     0Eh     8.6     16h    4.3     1Eh    2.1
  26552.  07h    16.0     0Fh     8.0     17h    4.0     1Fh    2.0
  26553. SeeAlso: AH=2Ah
  26554. --------b-162A------------------------------------
  26555. INT 16 - HUNTER 16 - CONTROL KEY REPEAT
  26556.     AH = 2Ah
  26557.     AL = new state of keyboard autorepeat (00h disabled, 01h enabled)
  26558. SeeAlso: AH=03h,AH=26h,AH=29h,AH=2Bh
  26559. --------b-162B------------------------------------
  26560. INT 16 - HUNTER 16 - REDEFINE KEY SCAN CODES
  26561.     AH = 2Bh
  26562.     AL = which key table to redefine
  26563.         00h unshifted
  26564.         01h shifted
  26565.         02h Numlock
  26566.     BH = standard scan code of key (00h-80h)
  26567.     BL = new scan code
  26568. Desc:    redefine the generated scan code from BH to BL
  26569. SeeAlso: AH=24h,AH=2Ah,AH=2Ch
  26570. --------b-162C------------------------------------
  26571. INT 16 - HUNTER 16 - REDEFINE RAW KEY CODES
  26572.     AH = 2Ch
  26573.     AL = Matrix code of key (see AH=29h)
  26574.     BL = new key code
  26575. Return: AL = status (00h success, nonzero failed)
  26576. Desc:    redefine the key code generated by holding the PAW key down and
  26577.       pressing the key in AL
  26578. SeeAlso: AH=24h,AH=2Bh
  26579. --------b-162D------------------------------------
  26580. INT 16 - HUNTER 16 - CONTROL BREAK KEYS
  26581.     AH = 2Dh
  26582.     AL = enabled break keys
  26583.         bit 0 Ctrl-C
  26584.         bit 1 Ctrl-Break
  26585.     BX = 0708h
  26586.     CX = 0910h
  26587.     DX = 1112h
  26588. Return: AL = status (00h success, FFh failed)
  26589. SeeAlso: AH=21h"HUNTER"
  26590. --------U-163577-----------------------------
  26591. INT 16 U - TextWare TWTSR - API
  26592.     AX = 3577h
  26593.     CX = function
  26594.         00CBh ???
  26595.         Return: AX = 0000h
  26596.             BX = 0000h
  26597.             DX:CX -> ???
  26598.         00CCh uninstall
  26599.         Return: AX = status
  26600.                 0000h successful
  26601.                 FFFDh unable to unload because vectors taken
  26602.         00CDh ???
  26603.         Return: AX = 0000h
  26604.             BX = 0000h
  26605.             DX:CX -> ???
  26606.         other
  26607.         Return: AX = 5345h ('SE')
  26608. Program: TWTSR is a TSR which allows the TextWare hypertext browser to be
  26609.       popped up via hotkey
  26610. SeeAlso: AX=D724h
  26611. --------U-164252-----------------------------
  26612. INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
  26613.     AX = 4252h
  26614. Return: AX = 5242h if installed
  26615. Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of
  26616.       the PC Magazine utility CAPTURE written by Tom Kihlken
  26617. SeeAlso: AX=4253h,AX=4254h
  26618. --------U-164253-----------------------------
  26619. INT 16 - TEXTCAP 2.0 - UNINSTALL
  26620.     AX = 4253h
  26621. Return: AX = segment of resident code
  26622. Notes:    the uninstall code does not check whether interrupt vectors have been
  26623.       chained by other programs
  26624.     the caller must free the main memory block (using the returned segment)
  26625. SeeAlso: AX=4252h,AX=4254h
  26626. --------U-164254-----------------------------
  26627. INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
  26628.     AX = 4254h
  26629. Return: AX = status
  26630.         4254h if screen dump will be written as soon as disk becomes idle
  26631.         5442h if screen dump written
  26632. SeeAlso: AX=4252h,AX=4253h
  26633. --------e-164500-----------------------------
  26634. INT 16 - Shamrock Software EMAIL - GET STATUS
  26635.     AX = 4500h
  26636.     DL = port number (01h = COM1)
  26637.     ES:BX -> 13-byte buffer for ASCIZ name
  26638. Return: AX = 4D00h if EMAIL installed on specified port
  26639.         ES:BX -> "" if no connection
  26640.           -> "*" if connection but caller has not identified name
  26641.           -> name otherwise
  26642.         CX = version (CH = major, CL = minor)
  26643.         DL = privilege level of user (00h = guest)
  26644.         DH = chosen language (00h German, 01h English)
  26645. SeeAlso: AX=4501h,AX=4502h
  26646. --------e-164501-----------------------------
  26647. INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
  26648.     AX = 4501h
  26649.     DL = port number (01h = COM1)
  26650. Return: AX = 4D00h if EMAIL installed on specified port
  26651.         BX = maximum connect time in clock ticks
  26652.         CX = maximum connect time for guests (without name) in clock ticks
  26653.         DX = elapsed connect time of current user in clock ticks
  26654. SeeAlso: AX=4500h
  26655. --------e-164502-----------------------------
  26656. INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
  26657.     AX = 4502h
  26658.     DL = port number (01h = COM1)
  26659. Return: AX = 4D00h if EMAIL installed on specified port
  26660.         BL = current value of serial port's Line Control Register
  26661.         BH = flags (see #0517)
  26662.         CX = selected country code (33 = France, 49 = Germany, etc)
  26663.         DX = baudrate divisor (115200/DX = baudrate)
  26664. SeeAlso: AX=4500h
  26665.  
  26666. Bitfields for Shamrock Software EMAIL flags:
  26667. Bit(s)    Description    (Table 0517)
  26668.  0    ISO code
  26669.  1    pause
  26670.  2    linefeed
  26671.  3    ANSI sequences
  26672. --------e-164503-----------------------------
  26673. INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
  26674.     AX = 4503h
  26675.     DL = port number (01h = COM1)
  26676.     DH = maximum execution time in clock ticks (00h = 5 seconds)
  26677.     ES:BX -> ASCIZ string with new user command-word
  26678. Return: AX = 4D00h if EMAIL installed on specified port
  26679. Notes:    a single user command (consisting of only uppercase letters and digits)
  26680.       may be defined, and remains valid until it is overwritten or the
  26681.       EMAIL program terminates; the user command must be activated by
  26682.       calling AX=4504h at least once.
  26683.     an existing command word may be redefined with this function
  26684. SeeAlso: AX=4504h,AX=4505h
  26685. --------e-164504-----------------------------
  26686. INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
  26687.     AX = 4504h
  26688.     DL = port number (01h = COM1)
  26689.     ES:BX -> 80-byte buffer for ASCIZ user input line
  26690. Return: AX = 4D00h if EMAIL installed on specified port
  26691.         DL = flags
  26692.         bit 0: user function supported (always set)
  26693.         bit 1: user entered user-function command word
  26694.         if DL bit 1 set,
  26695.         ES:BX buffer contains line entered by user which begins with
  26696.             the defined command word and has been converted to all
  26697.             caps
  26698. Note:    caller must process the returned commandline and invoke AX=4505h
  26699.       within five seconds with the result of that processing
  26700. SeeAlso: AX=4503h,AX=4505h
  26701. --------e-164505-----------------------------
  26702. INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
  26703.     AX = 4505h
  26704.     DL = port number (01h = COM1)
  26705.     DH = error flag
  26706.         bit 3: set on error
  26707.     ES:BX -> ASCIZ text to return to user, max 1024 bytes
  26708. Return: AH = 4Dh if EMAIL installed on specified port
  26709.     AL = status
  26710.         00h successful
  26711.         02h unable to perform function (timeout, prev call not complete)
  26712.         other error
  26713. Notes:    if the error flag in DH is set, the string is not sent and an error
  26714.       message is generated instead; if this function is not called within
  26715.       five seconds of AX=4504h, EMAIL automatically generates an error
  26716.       message
  26717.     the string is copied into an internal buffer, allowing this function's
  26718.       caller to continue immediately
  26719. SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
  26720. --------e-164506-----------------------------
  26721. INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
  26722.     AX = 4506h
  26723.     DL = port number (01h = COM1)
  26724.     ES:BX -> 13-byte buffer for ASCIZ filename
  26725. Return: AX = 4D00h if EMAIL installed on specified port
  26726.         DH = Xmodem status
  26727.         00h no XGET command given
  26728.         01h XGET in progress
  26729.         02h XGET completed successfully
  26730.         ES:BX buffer filled with last filename given to XGET command
  26731.         (without path)
  26732. Note:    DH=02h will only be returned once per XGET; subsequent calls will
  26733.       return DH=00h
  26734. SeeAlso: AX=4500h,INT 17/AX=2408h
  26735. --------K-164B-------------------------------
  26736. INT 16 - Frank Klemm Keyboard Driver v2.0 - API
  26737.     AH = 4Bh
  26738.     CX = code or action
  26739.         0000h-FEFFh key code
  26740.         FF00h-FFFFh action (see #0518)
  26741.     BL = scan code (normal keys) or scan code + 60h (enhanced keys)
  26742.     BH = shift state (see #0519)
  26743. Return: CX = previous code or action
  26744.  
  26745. (Table 0518)
  26746. Values for Frank Klemm Keyboard Driver action code:
  26747.  FF00h    no action
  26748.  FF01h    hardcopy
  26749.  FF02h    left shift
  26750.  FF03h    right shift
  26751.  FF04h    left Ctrl
  26752.  FF05h    right Ctrl
  26753.  FF06h    left Alt
  26754.  FF07h    right Alt / AltGr
  26755.  FF08h    CapsLock
  26756.  FF09h    NumLock
  26757.  FF0Ah    ScrlLock
  26758.  FF0Bh    Insert (returns code 5200h or 52E0h)
  26759.  FF0Ch    Pause
  26760.  FF0Dh    Ctrl-Break function
  26761.  FF0Eh    warm boot via far jump to F000h:FFF0h
  26762.  FF0Fh    terminate current program
  26763.  FF10h    key for entering keys via Alt-numpad (read-only)
  26764.  FF11h    clear keyboard buffer
  26765.  FF12h    reset (warmboot on XT)
  26766.  FF13h    mouse sensitivity (read-only)
  26767.  FF14h    keyjobs (read-only)
  26768.  FF15h    SysRq
  26769.  FF16h    turn on CPU cache (486+)
  26770.  FF17h    turn off CPU cache (486+)
  26771. SeeAlso: #0519
  26772.  
  26773. (Table 0519)
  26774. Values for Frank Klemm Keyboard Driver shift state:
  26775.  00h    no shift keys
  26776.  01h    either Shift
  26777.  02h    either Ctrl
  26778.  03h    left Alt
  26779.  04h    Ctrl + Alt
  26780. ---standard keyboard---
  26781.  05h    right Alt / AltGr
  26782. ---Russian keyboard---
  26783.  05h    Russian + no shift keys
  26784.  06h    Russian + either Shift
  26785. SeeAlso: #0518
  26786. --------K-164D4F-----------------------------
  26787. INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK
  26788.     AX = 4D4Fh
  26789. Return: AX = 6F6Dh if installed
  26790.         ES = segment of resident code
  26791. Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov
  26792. SeeAlso: INT 10/AX=1130h/BX=4D4Fh
  26793. --------J-165000-----------------------------
  26794. INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
  26795.     AX = 5000h
  26796.     BX = country code
  26797.         0001h USA (English), 0051h Japan
  26798. Return: AL = status
  26799.         00h successful
  26800.         01h bad country code
  26801.         02h other error
  26802. Notes:    the K3PLUS v6.00+ INT 16 BIOS replacement will switch between the
  26803.       supported country specific layout (e.g. BX=0031h Germany, BX=001Fh
  26804.       Netherlands, BX=0020h Belgium, BX=0022h Spain) (as with <Ctrl>+
  26805.       <Alt>+<F2>) and K3PLUS' transparent mode (as with <Ctrl>+<Alt>+<F1>).
  26806.     In transparent mode (BX=0001h), K3PLUS chains to the underlying
  26807.       driver (normally the BIOS driver with US-layout). K3PLUS beeps on
  26808.       mode changes
  26809. SeeAlso: AX=5001h,AX=AF4Dh,INT 10/AX=5000h,INT 17/AX=5000h
  26810. --------J-165001-----------------------------
  26811. INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
  26812.     AX = 5001h
  26813. Return: AL = status
  26814.         00h successful
  26815.         BX = country code
  26816.         02h error
  26817. Note:    also supported by K3PLUS v6.00+
  26818. SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
  26819. --------J-1651-------------------------------
  26820. INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
  26821.     AH = 51h
  26822. Return: AL = standard shift key states (see #0506,#0511)
  26823.     AH = Kana lock (00h off, 01h on)
  26824. Note:    also supported by K3PLUS v6.00+, but K3PLUS always returns AH=00h
  26825. SeeAlso: AH=02h,AH=12h,AH=22h
  26826. --------t-165453BX5242-----------------------
  26827. INT 16 - TSRBONES - INSTALLATION CHECK
  26828.     AX = 5453h ('TS')
  26829.     BX = 5242h ('RB')
  26830.     CX = 4F4Eh ('ON')
  26831.     DX = 4553h ('ES')
  26832. Return: AX = 4553h if installed
  26833.     BX = 4F4Eh if installed
  26834.     CX = 5242h if installed
  26835.     DX = 5453h if installed
  26836. Program: TSRBONES is a skeletal TSR framework by Robert Curtis Davis
  26837. Note:    these values are the default as the TSRBONES package is distributed,
  26838.       but will normally be changed when implementing an actual TSR with
  26839.       the TSRBONES skeleton
  26840. SeeAlso: INT 2D/AL=00h"AMIS"
  26841. --------A-165500-----------------------------
  26842. INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
  26843.     AX = 5500h
  26844. Return: AX = 4D53h ('MS') if keyboard TSR present
  26845. Notes:    during startup, Microsoft Word tries to communicate with any TSRs
  26846.       that are present through this call.
  26847.     if the return is not 4D53h, Word installs its own INT 09 and INT 16
  26848.       handlers; otherwise it assumes that the TSR will handle the keyboard
  26849. SeeAlso: AX=55FFh,INT 1A/AX=3601h
  26850. --------A-1655FE-----------------------------
  26851. INT 16 CU - Microsoft QBASIC internal - MICROSOFT COOPERATION WITH TSR
  26852.     AX = 55FEh
  26853.     DX = function
  26854.         0000h initialize
  26855.         ES:BX -> ??? function
  26856.         ES:CX -> ??? structure
  26857.         FFFFh shutdown/reset
  26858. Return: AX = result
  26859.         4D4Bh only the INT 1B handler will be installed.
  26860.         other: handlers for INT 08, INT 09, INT 16, INT 1B, and INT 1C
  26861.           are installed
  26862. Notes:    The pointer in ES:CX seems to point at a structure defining a callback
  26863.       function when new keyboard keys are pressed. If a TSR returns
  26864.       AX=4D4Bh, QBASIC will stop (with IRQ's and interrupts enabled).
  26865.     these calls are also made by MS-DOS 6.0's DOSSHELL at startup, exit,
  26866.       and before/after shelling out
  26867.     since EDIT.COM and HELP.COM merely invoke QBASIC, those two programs
  26868.       will also cause this interface to be invoked
  26869.     K3PLUS v6.07+ supports this function, but will never invoke the
  26870.       callback function
  26871. SeeAlso: AX=5500h,AX=AF4Dh,INT 1A/AX=3601h
  26872. --------U-1655FF-----------------------------
  26873. INT 16 C - Microsoft Word - TSR COOPERATION???
  26874.     AX = 55FFh
  26875.     BX >= 0004h (version of Microsoft Word [BL = major] ???)
  26876.     CX = function
  26877.         0000h set ??? flag
  26878.         other clear ??? flag
  26879. Notes:    hooks intercepting this call are present in SWAPSH and SWAPDT v1.77j,
  26880.       distributed with PC Tools v7, as well as the Trusted Access
  26881.       SCRNBLNK.COM; this may be part of the standard TesSeRact library
  26882.     known to be called by the German edition of Microsoft Word 5.0
  26883. SeeAlso: AX=5500h,INT 2F/AX=5453h
  26884. --------c-165758BX4858-----------------------
  26885. INT 16 U - Netroom CACHECLK - INSTALLATION CHECK
  26886.     AX = 5758h
  26887.     BX = 4858h ('HX')
  26888.     DX = 4443h ('DC')
  26889.     CX <> 5758h
  26890. Return: BX = 6878h if installed
  26891.     CX = 6463h if installed
  26892.         AX = code segment of TSR
  26893.         CX = internal version??? (v3.00 returns 0100h)
  26894. Program: CACHECLK is a "cloaked" disk cache included with Netroom
  26895. Notes:    if CX=5758h on entry, CACHECLK returns with all registers unchanged
  26896.     the cache statistics are located early in the segment pointed at by
  26897.       AX on return
  26898. SeeAlso: INT 2F/AX=5758h
  26899. --------m-165758BX5754-----------------------
  26900. INT 16 U - Netroom ??? - ???
  26901.     AX = 5758h
  26902.     BX = 5754h
  26903.     ???
  26904. Return: ???
  26905. --------m-165758BX5755-----------------------
  26906. INT 16 U - Netroom ??? - ???
  26907.     AX = 5758h
  26908.     BX = 5755h
  26909.     DS:SI -> ???
  26910. Return: ???
  26911. --------m-165758BX5756-----------------------
  26912. INT 16 U - Netroom ??? - INSTALLATION CHECK
  26913.     AX = 5758h
  26914.     BX = 5756h
  26915. Return: BX <> 5756h if installed
  26916. --------m-165758BX5858-----------------------
  26917. INT 16 U - Netroom PRENET - GET OLD INTERRUPT VECTORS
  26918.     AX = 5758h
  26919.     BX = 5858h
  26920. Return: CF clear
  26921.     DX:BX -> saved copy of interrupt vector table
  26922. Note:    the installation check consists of calling this function and comparing
  26923.       BX against 5858h on return; if it has changed, PRENET is installed
  26924. SeeAlso: AX=5758h/BX=5859h
  26925. Index:    installation check;Netroom PRENET
  26926. --------m-165758BX5859-----------------------
  26927. INT 16 U - Netroom POSTNET - GET OLD INTERRUPT VECTORS
  26928.     AX = 5758h
  26929.     BX = 5859h
  26930. Return: CF clear
  26931.     DX:BX -> saved copy of interrupt vector table
  26932. Note:    the installation check consists of calling this function and comparing
  26933.       BX against 5859h on return; if it has changed, POSTNET is installed
  26934. SeeAlso: AX=5758h/BX=5858h
  26935. Index:    installation check;Netroom POSTNET
  26936. ----------166701-----------------------------
  26937. INT 16 - Doorway v2.30+ - INSTALLATION CHECK
  26938.     AX = 6701h
  26939. Return: AX = 8080h if running under Doorway
  26940. Program: Doorway is a program by Marshall Dudley which allows most DOS programs
  26941.       to run as a BBS door without modification
  26942. --------U-166969BX6968-----------------------
  26943. INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
  26944.     AX = 6969h
  26945.     BX = 6968h
  26946. Return: resident code unhooked, but not removed from memory
  26947. Index:    uninstall;BACKTALK
  26948. --------U-166969BX6969-----------------------
  26949. INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
  26950.     AX = 6969h
  26951.     BX = 6969h
  26952.     DX = 0000h
  26953. Return: DX nonzero if installed
  26954.         BX = CS of resident code
  26955.         DX = PSP segment of resident code
  26956.         DS:SI -> ASCIZ identification string "CPoint Talk"
  26957. --------i-166A6B-----------------------------
  26958. INT 16 U - FastJuice - DISABLE/UNLOAD???
  26959.     AX = 6A6Bh
  26960. Return: ???
  26961. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  26962. SeeAlso: AX=7463h
  26963. Index:    uninstall;FastJuice
  26964. --------G-166C63-----------------------------
  26965. INT 16 U - TMED v1.6a - INSTALLATION CHECK
  26966.     AX = 6C63h ('lc')
  26967. Return: AX = 4C43h ('LC') if installed
  26968. Program: TMED is a freeware resident memory editor by Liang Chen
  26969. --------U-166D74-----------------------------
  26970. INT 16 - MTRTSR - INSTALLATION CHECK
  26971.     AX = 6D74h ('mt')
  26972. Return: AX = 4D54h ('MT') if installed
  26973. Program: MTRTSR is a part of the shareware MTR package by Mechon Mamre which
  26974.       permits searching the large corpus of classical Hebrew texts in the
  26975.       package
  26976. SeeAlso: INT 10/AX=6D74h"MTRFONTS"
  26977. --------!---Section--------------------------
  26978. Interrupt List, part 4 of 16
  26979. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
  26980. --------b-166F00-----------------------------
  26981. INT 16 - HP Vectra EX-BIOS - "F16_INQUIRE" - Extended BIOS INSTALLATION CHECK
  26982.     AX = 6F00h
  26983.     BX <> 4850h (usually set to 0000h for simplicity)
  26984. Return: BX = 4850h ("HP") if present
  26985. Notes:    called by recent MS Mouse drivers looking for an HP-HIL mouse
  26986.     supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  26987. SeeAlso: AX=6F01h,AX=6F04h,AX=6F07h,AX=6F09h,AX=6F0Dh,AX=6F11h,AX=6F12h
  26988. SeeAlso: INT 14/AX=6F00h,INT 17/AX=6F00h,INT 33/AX=6F00h
  26989. SeeAlso: INT 6F/AH=00h"HP Vectra"
  26990. --------b-166F01-----------------------------
  26991. INT 16 - HP Vectra EX-BIOS - "F16_DEF_ATTR" - GET DEFAULT TYPEMATIC VALUES
  26992.     AX = 6F01h
  26993. Return: AH = 00h (successful)
  26994.     CX = 0004h (size of returned buffer)
  26995.     ES:SI -> buffer for typematic info (see #0520)
  26996. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  26997. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
  26998.  
  26999. Format of HP Vectra EX-BIOS typematic info:
  27000. Offset    Size    Description    (Table 0520)
  27001.  00h    BYTE    delay before repeat for all non-Cursor Control Pad keys
  27002.         (see #0521)
  27003.  01h    BYTE    typematic rate for all non-Cursor Control Pad keys (see #0522)
  27004.  02h    BYTE    delay before repeat for Cursor Control Pad keys    (see #0523)
  27005.  03h    BYTE    typematic rate for Cursor Control Pad keys (see #0522)
  27006.  
  27007. (Table 0521)
  27008. Values for HP Vectra EX-BIOS non-CCP delay time:
  27009.  00h    17 ms
  27010.  01h    150 ms
  27011.  02h    283 ms
  27012.  03h    417 ms
  27013.  04h    550 ms
  27014.  05h    683 ms
  27015.  06h    817 ms
  27016.  07h    950 ms
  27017.  08h    1083 ms
  27018.  09h    1217 ms
  27019.  0Ah    1350 ms
  27020.  0Bh    1483 ms
  27021.  0Ch    1617 ms
  27022.  0Dh    1750 ms
  27023.  0Eh    1883 ms
  27024.  0Fh    2017 ms
  27025. Note:    the above values assume that the key repeat rate has been set to 60 Hz;
  27026.       double the times if set to 30 Hz
  27027. SeeAlso: #0520,#0522,#0523
  27028.  
  27029. (Table 0522)
  27030. Values for HP Vectra EX-BIOS typematic rate:
  27031.  00h    60 / sec
  27032.  01h    30 / sec
  27033.  02h    20
  27034.  03h    15
  27035.  04h    12
  27036.  05h    10
  27037.  06h    8.57
  27038.  07h    7.5
  27039.  08h    6.66
  27040.  09h    6 / sec
  27041.  0Ah    5.45
  27042.  0Bh    5
  27043.  0Ch    4.62
  27044.  0Dh    4.28
  27045.  0Eh    4 / sec
  27046.  0Fh    typematic disabled
  27047. Note:    the above values assume that the key repeat rate has been set to 60 Hz;
  27048.       halve the rates if set to 30 Hz
  27049. SeeAlso: #0521,#0523
  27050.  
  27051. (Table 0523)
  27052. Values for HP Vectra EX-BIOS CCP delay time:
  27053.  00h    17 ms
  27054.  01h    83 ms
  27055.  02h    150 ms
  27056.  03h    217 ms
  27057.  04h    283 ms
  27058.  05h    350 ms
  27059.  06h    417 ms
  27060.  07h    483 ms
  27061.  08h    550 ms
  27062.  09h    617 ms
  27063.  0Ah    683 ms
  27064.  0Bh    750 ms
  27065.  0Ch    817 ms
  27066.  0Dh    883 ms
  27067.  0Eh    950 ms
  27068.  0Fh    1017 ms
  27069. Note:    the above values assume that the key repeat rate has been set to 60 Hz;
  27070.       double the times if set to 30 Hz
  27071. SeeAlso: #0521,#0522
  27072. --------b-166F02-----------------------------
  27073. INT 16 - HP Vectra EX-BIOS - "F16_GET_ATTR" - GET CURRENT TYPEMATIC VALUES
  27074.     AX = 6F02h
  27075. Return: AH = 00h (successful)
  27076.     CX = 0004h (size of returned buffer)
  27077.     ES:SI -> buffer for typematic info (see #0520)
  27078. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  27079. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
  27080. SeeAlso: AX=6F00h,AX=6F01h,AX=6F03h
  27081. --------b-166F03-----------------------------
  27082. INT 16 - HP Vectra EX-BIOS - "F16_SET_ATTR" - SET TYPEMATIC VALUES
  27083.     AX = 6F03h
  27084.     ES:SI -> buffer containing typematic info (see #0520)
  27085. Return: AH = 00h (successful)
  27086. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  27087. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
  27088. SeeAlso: AX=6F00h,AX=6F01h,AX=6F02h
  27089. --------b-166F04-----------------------------
  27090. INT 16 - HP Vectra EX-BIOS - "F16_DEF_MAPPING" - GET DEFAULT KEY MAPPINGS
  27091.     AX = 6F04h
  27092.     ES:SI -> mapping buffer (see #0524)
  27093. Return: AH = 00h (successful)
  27094.     CX = 001Eh (number of bytes in buffer)
  27095.     ES:SI buffer filled
  27096. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  27097.     the HIL input system translates the HIL keyboard events to simulate
  27098.       an IBM-compatible keyboard; the translation can be altered
  27099.       dynamically by applications
  27100. SeeAlso: AX=6F00h,AX=6F05h,AX=6F06h
  27101.  
  27102. Format of HP Vectra EX-BIOS keyboard mapping info:
  27103. Offset    Size    Description    (Table 0524)
  27104.  00h  3 WORDs    entry for V_QWERTY driver (IP, CS, DS)
  27105.  06h  3 WORDs    entry for V_SOFTKEY driver (IP, CS, DS)
  27106.  0Ch  3 WORDs    entry for V_FUNCTION driver
  27107.  12h  3 WORDs    entry for V_NUMPAD driver
  27108.  18h  3 WORDs    entry for V_CCP driver
  27109. --------b-166F05-----------------------------
  27110. INT 16 - HP Vectra EX-BIOS - "F16_GET_MAPPING" - GET CURRENT KEY MAPPINGS
  27111.     AX = 6F05h
  27112.     ES:SI -> mapping buffer (see #0524)
  27113. Return: AH = 00h (successful)
  27114.     CX = 001Eh (number of bytes in buffer)
  27115.     ES:SI buffer filled
  27116. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  27117. SeeAlso: AX=6F04h,AX=6F06h
  27118. --------b-166F06-----------------------------
  27119. INT 16 - HP Vectra EX-BIOS - "F16_SET_MAPPING" - SET KEY MAPPINGS
  27120.     AX = 6F06h
  27121.     CX = number of bytes in buffer (001Eh)
  27122.     ES:SI -> mapping buffer (see #0524)
  27123. Return: AH = 00h (successful)
  27124. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  27125.     any application which modifies the key mappings should restore them
  27126.       before terminating
  27127.     drivers installed with this function are assured of 32 bytes of stack
  27128.       space when they are invoked
  27129. SeeAlso: AX=6F04h,AX=6F05h,AX=6F07h
  27130. --------b-166F07-----------------------------
  27131. INT 16 - HP Vectra EX-BIOS - "F16_SET_XLATORS" - SET CCP AND SOFTKEY PADS
  27132.     AX = 6F07h
  27133.     BL = translation to set (see #0525)
  27134. Return: AH = 00h (successful)
  27135. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  27136.     this function may no longer work properly if the application has
  27137.       modified the key mappings with AX=6F06h
  27138. SeeAlso: AX=6F06h,AX=6F09h
  27139.  
  27140. (Table 0525)
  27141. Values for HP Vectra keyboard translation specifier:
  27142.  00h    map V_CCP to V_CCPCUR, forcing the cursor pad to return cursor keys
  27143.  01h    map V_CCP to V_CCPNUM, forcing the cursor pad to always return numbers
  27144.  02h    map V_CCP to V_OFF, disabling the cursor pad
  27145.  03h    map V_CCP to V_CCPGID, converting cursor pad keys to GID data
  27146.  04h    map V_CCP to V_RAW, passing cursor pad data untranslated to INT 09
  27147.  05h    map V_SOFTKEY to V_SKEY2KFEY, translating into standard function keys
  27148.  06h    map V_SOFTKEY to V_RAW, passing Softkey scancodes direct to INT 09
  27149.  07h    map V_SOFTKEY to V_OFF, disabling HP Softkeys
  27150. SeeAlso: #0526
  27151.  
  27152. (Table 0526)
  27153. Values for HP Vectra scancodes and BIOS keycodes for V_RAW translator:
  27154.           INT 09         INT 16 keycode
  27155.     Key         scan code    Default     Shifted   Ctrl         Alt
  27156.  * (NumPd)    37h    2Ah     (Prt Sc)  00/72h    00/37H
  27157.  Sysreq        54h      --     --       --         --
  27158.  CCP-Up        60h    00/D9h     00/BFh       00/A5h    00/8BH
  27159.  CCP-Left    61h    00/DAh     00/C0h       00/A6h    00/8CH
  27160.  CCP-Down    62h    00/DBh     00/C1h       00/A7h    00/8DH
  27161.  CCP-Right    63h    00/DCh     00/C2h       00/A8h    00/8EH
  27162.  CCP-Home    64h    00/DDh     00/C3h       00/A9h    00/8FH
  27163.  CCP-PgUp    65h    00/DEh     00/C4h       00/AAh    00/90H
  27164.  CCP-End    66h    00/DFh     00/C5h       00/ABh    00/91H
  27165.  CCP-PgDn    67h    00/E0h     00/C6h       00/ACh    00/92H
  27166.  CCP-Ins    68h    00/E1h     00/C7h       00/ADh    00/93H
  27167.  CCP-Del    69h    00/E2h     00/C8h       00/AEh    00/94H
  27168.  CCP-CNTR    6Ah    00/E3h     00/C9h       00/AFh    00/95H
  27169.  f1        70h    00/E9h     00/CFh       00/B5h    00/9BH
  27170.  f2        71h    00/EAh     00/D0h       00/B6h    00/9CH
  27171.  f3        72h    00/EBh     00/D1h       00/B7h    00/9DH
  27172.  f4        73h    00/ECh     00/D2h       00/B8h    00/9EH
  27173.  f5        74h    00/EDh     00/D3h       00/B9h    00/9FH
  27174.  f6        75h    00/EEh     00/D4h       00/BAh    00/A0H
  27175.  f7        76h    00/EFh     00/D5h       00/BBh    00/A1H
  27176.  f8        77h    00/F0h     00/D6h       00/BCh    00/A2H
  27177. Note:    only HP-specific codes are listed in this table; see INT 09 for a full
  27178.       list of standard scan codes
  27179. SeeAlso: #0005,#0525
  27180. --------b-166F08-----------------------------
  27181. INT 16 - HP Vectra EX-BIOS - "F16_KBD" - GET KEYBOARD INFORMATION
  27182.     AX = 6F08h
  27183. Return: AH = status
  27184.        00h successful
  27185.        02h unsupported (non-HIL, i.e. standard, keyboard)
  27186.     BH = HP-HIL address (HP Vectra AT only???)
  27187.     BL = HP-HIL ID (HP Vectra AT only???)
  27188.     BL = keyboard language (ES/QS/RS only???) (see #0527)
  27189. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  27190.     the driver's address in the HP_VECTOR_TABLE (see INT 6F/AH=00h) may
  27191.       be computed as (BH-1)*6 + N, where N is the address of the first
  27192.       HP-HIL device driver (see INT 6F/AH=0Ah"F_INQUIRE_FIRST")
  27193. SeeAlso: AX=6F05h,AX=6F09h,INT 6F/AH=0Ah"F_INQUIRE_FIRST"
  27194.  
  27195. (Table 0527)
  27196. Values for HP HIL keyboard language code:
  27197.  00h    reserved
  27198.  01h    Arabic-French
  27199.  02h    Kanji
  27200.  03h    Swiss-French
  27201.  04h    Portugese
  27202.  05h    Arabic
  27203.  06h    Hebrew
  27204.  07h    Canadian-English
  27205.  08h    Turkish
  27206.  09h    Greek
  27207.  0Ah    Thai
  27208.  0Bh    Italian
  27209.  0Ch    Hangul (Korean)
  27210.  0Dh    Dutch
  27211.  0Eh    Swedish
  27212.  0Fh    German
  27213.  10h    Chinese (PRC)
  27214.  11h    Chinese (Taiwan)
  27215.  12h    Swiss (French ii)
  27216.  13h    Spanish
  27217.  14h    Swiss (German ii)
  27218.  15h    Belgian (Flemish)
  27219.  16h    Finish
  27220.  17h    United Kingdom
  27221.  18h    French-Canadian
  27222.  19h    French-German
  27223.  1Ah    Norwegian
  27224.  1Bh    French
  27225.  1Ch    Danish
  27226.  1Dh    Katakana
  27227.  1Eh    Latin American Spanish
  27228.  1Fh    United States-American
  27229.  20h-FEh reserved
  27230.  FFh    non-HP keyboard (IBM AT keyboard and IBM Enhanced keyboard)
  27231. --------b-166F09-----------------------------
  27232. INT 16 - HP Vectra EX-BIOS - "F16_KBD_RESET" - RESET KEYBOARD TO DEFAULTS
  27233.     AX = 6F09h
  27234. Return: AH = 00h (successful)
  27235. Desc:    reset all keyboard mappings to their default translators, and reset
  27236.       typematic values to their defaults
  27237. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  27238. SeeAlso: AX=6F04h,AX=6F07h,AX=6F08h
  27239. --------b-166F0A-----------------------------
  27240. INT 16 - HP Vectra ES/QS/RS EX-BIOS - READ PROCESSOR SPEED
  27241.     AX = 6F0Ah
  27242. Return: AH = 00h (successful)
  27243.     BX = speed code
  27244.         0Bh for low speed (see #0528)
  27245.         12h for medium speed (see #0528)
  27246.         0Ch for high speed (see #0528)
  27247. Note:    supported by ES, QS, and RS series of HP Vectras
  27248. SeeAlso: AX=6F00h
  27249.  
  27250. (Table 0528)
  27251. Values for HP Vetra CPU speed:
  27252.     Vectra        Low        Medium    High
  27253.     ES        8 MHz         -         8 MHz
  27254.     ES/12        8 MHz         -        12 MHz
  27255.     QS/16, RS/16    8 MHz         -        16 MHz
  27256.     QS/16S        8 MHz         -        16 MHz
  27257.     QS/20, RS/20    8 MHz         -        20 MHz
  27258.     RS/20C        5 MHz        10 MHz    20 MHz
  27259.     RS/25C        5 MHz        12.5 MHz    25 MHz
  27260. --------b-166F0B-----------------------------
  27261. INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO LOW
  27262.     AX = 6F0Bh
  27263. Return: AH = 00h (successful)
  27264. Notes:    see AX=6F0Ah for speed definitions
  27265.     supported by ES, QS, and RS series of HP Vectras
  27266. SeeAlso: AX=6F00h,AX=6F0Ah
  27267. --------b-166F0C-----------------------------
  27268. INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO HIGH
  27269.     AX = 6F0Ch
  27270. Return: AH = 00h (successful)
  27271. Notes:    see AX=6F0Ah for speed definitions
  27272.     supported by ES, QS, and RS series of HP Vectras
  27273. SeeAlso: AX=6F00h,AX=6F0Ah
  27274. --------b-166F0D-----------------------------
  27275. INT 16 - HP Vectra ES/QS/RS EX-BIOS - GET HIL Extended BIOS INTERRUPT NUMBER
  27276.     AX = 6F0Dh
  27277. Return: AH = interrupt number (default 6Fh, 02h means 6Fh as well)
  27278. Notes:    supported by ES, QS, and RS series of HP Vectras
  27279.     called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  27280.       input system
  27281. SeeAlso: AX=6F00h,AX=6F0Eh,INT 6F/AH=00h"HP Vectra",INT 6F/AH=0Ah"HP"
  27282. --------b-166F0E-----------------------------
  27283. INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET HIL Extended BIOS INTERRUPT NUMBER
  27284.     AX = 6F0Eh
  27285.     BL = new interrupt number (60h-6Fh,78h-7Fh)
  27286. Return: AH = status (00h = successful)
  27287. Desc:    allows the HIL Extended BIOS software to use a non-default interrupt
  27288.       number in case of an interrupt conflict with another application
  27289. Notes:    supported by ES, QS, and RS series of HP Vectras
  27290.     called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  27291.       input system
  27292. SeeAlso: AX=6F00h,AX=6F0Dh,INT 6F/AH=00h"HP",INT 6F/AH=0Ah"HP"
  27293. --------b-166F0F-----------------------------
  27294. INT 16 - HP Vectras RS/20C and RS/25C - ENABLE MEMORY CACHING
  27295.     AX = 6F0Fh
  27296. Return: AH = status
  27297.         00h successful
  27298.         FEh cache subsystem is bad
  27299. SeeAlso: AX=6F00h,AX=6F10h,AX=6F11h
  27300. --------b-166F10-----------------------------
  27301. INT 16 - HP Vectras RS/20C and RS/25C - DISABLE MEMORY CACHING
  27302.     AX = 6F10h
  27303. Return: AH = 00h (successful)
  27304. SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F11h
  27305. --------b-166F11-----------------------------
  27306. INT 16 - HP Vectras RS/20C and RS/25C - GET MEMORY CACHING STATE
  27307.     AX = 6F11h
  27308. Return: AH = 00h (successful)
  27309.     AL bit 0 = cache state
  27310.         0 cache disabled
  27311.         1 cache enabled
  27312. SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F10h
  27313. --------b-166F12-----------------------------
  27314. INT 16 - HP Vectras RS/20C and RS/25C - SET PROCESSOR SPEED TO MEDIUM
  27315.     AX = 6F12h
  27316. Return: AH = 00h (successful)
  27317. Note:    see AX=6F0Ah for speed definitions
  27318. SeeAlso: AX=6F00h,AX=6F0Ah
  27319. --------K-1670-------------------------------
  27320. INT 16 - FAKEY.COM - INSTALLATION CHECK
  27321.     AH = 70h
  27322. Return: AX = 1954h if installed
  27323. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  27324. --------K-1671-------------------------------
  27325. INT 16 - FAKEY.COM - PUSH KEYSTROKES
  27326.     AH = 71h
  27327.     CX = number of keystrokes
  27328.     DS:SI -> array of words containing keystrokes to be returned by AH=00h
  27329. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  27330. SeeAlso: AH=05h,AH=72h
  27331. --------K-1672-------------------------------
  27332. INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
  27333.     AH = 72h
  27334. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  27335. SeeAlso: AH=71h
  27336. --------K-1673-------------------------------
  27337. INT 16 - FAKEY.COM - PLAY TONES
  27338.     AH = 73h
  27339.     CX = number of tones to play
  27340.     DS:SI -> array of tones (see #0529)
  27341. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  27342. SeeAlso: INT 15/AX=1019h
  27343.  
  27344. Format of FAKEY.COM tone array entries:
  27345. Offset    Size    Description    (Table 0529)
  27346.  00h    WORD    divisor for timer channel 2
  27347.  02h    WORD    duration in clock ticks
  27348. --------i-167463-----------------------------
  27349. INT 16 U - FastJuice - INSTALLATION CHECK
  27350.     AX = 7463h ("tc")
  27351. Return: AX = 5443h ("TC") if installed
  27352. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  27353. SeeAlso: AX=6A6Bh
  27354. --------R-1675-------------------------------
  27355. INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING
  27356.     AH = 75h
  27357.     AL = number of ticks between checks for new screen changes
  27358. --------R-1676-------------------------------
  27359. INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE
  27360.     AH = 76h
  27361.     AL = error checking type
  27362.         00h none
  27363.         01h fast
  27364.         02h slow
  27365. --------R-1677-------------------------------
  27366. INT 16 - pcANYWHERE III - LOG OFF
  27367.     AH = 77h
  27368.     AL = mode
  27369.         00h wait for another call
  27370.         01h leave in Memory Resident Mode
  27371.         02h leave in Automatic Mode
  27372.         FFh leave in current operating mode
  27373. --------U-167761-----------------------------
  27374. INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK
  27375.     AX = 7761h ('wa')
  27376. Return: AX = 5741h ('WA') if installed
  27377. Note:    WATCH.COM is part of the "TSR" package by Kim Kokkonen
  27378. SeeAlso: INT 21/AX=7761h
  27379. --------U-167788BX7789-----------------------
  27380. INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
  27381.     AX = 7788h
  27382.     BX = 7789h
  27383.     DS:SI -> signature "PUSHDIR VERSION 1.0"
  27384. Return: AX = 7789h if installed and signature correct
  27385.     BX = 7788h
  27386.     SI destroyed
  27387. --------R-1679-------------------------------
  27388. INT 16 - pcANYWHERE III - CHECK STATUS
  27389.     AH = 79h
  27390. Return: AX = status
  27391.         FFFFh if resident and active
  27392.         FFFEh if resident but not active
  27393.         FFFDh if in Memory Resident mode
  27394.         FFFCh if in Automatic mode
  27395.         other value if not resident
  27396. SeeAlso: AX=7B00h,INT 21/AX=2B44h
  27397. --------R-167A-------------------------------
  27398. INT 16 - pcANYWHERE III - CANCEL SESSION
  27399.     AH = 7Ah
  27400. --------R-167B00-----------------------------
  27401. INT 16 - pcANYWHERE III - SUSPEND
  27402.     AX = 7B00h
  27403. SeeAlso: AH=79h,AX=7B01h
  27404. --------R-167B01-----------------------------
  27405. INT 16 - pcANYWHERE III - RESUME
  27406.     AX = 7B01h
  27407. SeeAlso: AH=79h,AX=7B00h
  27408. --------R-167C-------------------------------
  27409. INT 16 - pcANYWHERE III - GET PORT CONFIGURATION
  27410.     AH = 7Ch
  27411. Return: AH = port number
  27412.     AL = baud rate (see #0530)
  27413. SeeAlso: AX=7B00h,AH=7Eh
  27414.  
  27415. (Table 0530)
  27416. Values for pcANYWHERE III baud rate:
  27417.  00h    50 baud
  27418.  01h    75 baud
  27419.  02h    110 baud
  27420.  03h    134.5 baud
  27421.  04h    150 baud
  27422.  05h    300 baud
  27423.  06h    600 baud
  27424.  07h    1200 baud
  27425.  08h    1800 baud
  27426.  09h    2000 baud
  27427.  0Ah    2400 baud
  27428.  0Bh    4800 baud
  27429.  0Ch    7200 baud
  27430.  0Dh    9600 baud
  27431.  0Eh    19200 baud
  27432. SeeAlso: #0235
  27433. --------R-167D-------------------------------
  27434. INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS
  27435.     AH = 7Dh
  27436.     AL = subfunction
  27437.         00h set terminal parameters
  27438.         01h get terminal parameters
  27439.         02h get configuration header and terminal parameters
  27440.     DS:CX -> terminal parameter block
  27441. SeeAlso: AH=7Ch,AH=7Eh
  27442. --------R-167E-------------------------------
  27443. INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT
  27444.     AH = 7Eh
  27445.     AL = subfunction
  27446.         01h port input status
  27447.         Return AX = 0 if no characer ready,
  27448.                AX = 1 if character ready
  27449.         02h port input character
  27450.         Return AL = received character
  27451.         03h port output character in CX
  27452.         11h hang up phone
  27453. SeeAlso: AH=7Ch
  27454. --------R-167F-------------------------------
  27455. INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE
  27456.     AH = 7Fh
  27457.     AL = subfunction
  27458.         00h enable remote keyboard only
  27459.         01h enable host keyboard only
  27460.         02h enable both keyboards
  27461.         08h display top 24 lines
  27462.         09h display bottom 24 lines
  27463.         10h Hayes modem
  27464.         11h other modem
  27465.         12h direct connect
  27466. --------U-1680-------------------------------
  27467. INT 16 - MAKEY.COM - INSTALLATION CHECK
  27468.     AH = 80h
  27469. Return: AX = 1954h if installed
  27470. Program: MAKEY is a utility by System Enhancement Associates
  27471. --------K-1687-------------------------------
  27472. INT 16 - DK.COM v1.03 - INSTALLATION CHECK
  27473.     AH = 87h
  27474. Return: AX = 4A57h ('JW') if installed
  27475. Program: DK.COM is the resident part of a small keyboard macro utility
  27476.       by Digital Mechanics.
  27477. --------U-168765BX4321-----------------------
  27478. INT 16 - AT.COM version 8/26/87 - API
  27479.     AX = 8765h
  27480.     BX = 4321h
  27481.     CX = ??? or FFFFh
  27482.     if CX = FFFFh
  27483.         DX = number of event to remove or FFFFh
  27484. Return: ES:BX -> event record array (see #0531)
  27485. Program: AT.COM is a resident scheduler by Bill Frolik
  27486.  
  27487. Format of AT.COM event record:
  27488. Offset    Size    Description    (Table 0531)
  27489.  00h    BYTE    in-use flag (00h free, 01h in use, FFh end of array)
  27490.  01h    BYTE    day of date on which to trigger
  27491.  02h    BYTE    month of date on which to trigger
  27492.  03h    BYTE    trigger time, minute
  27493.  04h    BYTE    trigger time, hour
  27494.  05h    WORD    offset of command to be executed
  27495. --------K-1692-------------------------------
  27496. INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!)
  27497.     AH = 92h
  27498. Return: AH <= 80h if enhanced keyboard functions (AH=10h-12h) supported
  27499. Desc:    this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
  27500.       to determine the highest supported keyboard function
  27501. Note:    many BIOSes (including at least some versions of Phoenix and AMI) will
  27502.       destroy AH on return from functions higher than AH=12h, returning
  27503.       12h less than was in AH on entry (due to a chain of DEC/JZ
  27504.       instructions)
  27505. SeeAlso: AH=05h"PCjr",AH=A2h,INT 2F/AX=AD80h
  27506. --------U-1699-------------------------------
  27507. INT 16 - SCOUT v5.4 - GET ???
  27508.     AH = 99h
  27509. Return: AX = ABCDh
  27510.     BX:CX -> ??? (appears to be start of PSP for resident portion)
  27511. Program: Scout is a memory-resident file manager by New-Ware
  27512. SeeAlso: AH=9Eh
  27513. --------U-169E-------------------------------
  27514. INT 16 - SCOUT v5.4 - INSTALLATION CHECK
  27515.     AH = 9Eh
  27516. Return: AX = ABCDh if installed
  27517. Program: Scout is a memory-resident file manager by New-Ware
  27518. SeeAlso: AH=99h
  27519. --------K-16A2-------------------------------
  27520. INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!)
  27521.     AH = A2h
  27522. Return: AH <= 80h if 122-key keyboard functions (AH=20h-22h) supported
  27523. Desc:    this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
  27524.       to determine the highest supported keyboard function
  27525. Note:    many BIOSes (including at least some versions of Phoenix and AMI) will
  27526.       destroy AH on return from functions higher than AH=12h, returning
  27527.       12h less than was in AH on entry (due to a chain of DEC/JZ
  27528.       instructions)
  27529. SeeAlso: AH=05h"PCjr",AH=92h,INT 2F/AX=AD80h
  27530. --------V-16AA-------------------------------
  27531. INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
  27532.     AH = AAh
  27533.     Various registers set up by high level language.
  27534. Return: Graphics performed
  27535. Note:    PT stands for Paint Tools which is a graphics library for Turbo Pascal,
  27536.       Modula 2 and others from DataBiten in Sweden. The library is
  27537.       installed as a memory resident driver.
  27538. --------U-16AABBBXEEFF-----------------------
  27539. INT 16 U - JORJ v4.3 - INSTALLATION CHECK
  27540.     AX = AABBh
  27541.     BX = EEFFh
  27542. Return: AX = EEFFh if installed
  27543.     BX = AABBh if installed
  27544.         CL = hotkey name (default 6Ah 'j' for Alt-J)
  27545. Program: JORJ is a shareware dictionary with phonetic lookup by Jorj Software
  27546.       Co.
  27547. Index:    hotkeys;JORJ
  27548. --------K-16AF20BX4B33-----------------------
  27549. INT 16 - K3PLUS v6.00+ (API v2.0+) - GET EXTENDED BUFFER STATE
  27550.     AX = AF20h
  27551.     BX = 4B33h ('K3')
  27552. Return: AX = K3 version (same as returned in BX by AX=AF4Dh)
  27553.     ES:BX -> extended keyboard buffer start
  27554.     ES:DX -> extended keyboard buffer end
  27555.     ES:SI -> next keystroke
  27556.     ES:DI -> last keystroke in buffer
  27557.     CX = number of keystrokes in buffer
  27558. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  27559.       Frinke, originally based on the K3 extended German keyboard driver
  27560.       by Martin Gerdes published in c't magazine in 1988
  27561. Note:    this function replaces the identical function AH=20h"K3"
  27562. SeeAlso: AH=20h"K3",AX=AF25h,AX=AF4Dh,AX=AF50h,INT 2F/AX=ED58h
  27563. --------K-16AF25BX4B33-----------------------
  27564. INT 16 - K3PLUS v6.00+ (API v2.0+) - COPY INTO EXTENDED BUFFER
  27565.     AX = AF25h
  27566.     BX = 4B33h ('K3')
  27567.     CX = number of keystrokes to copy
  27568.     ES:SI -> buffer containing keystrokes
  27569. Return: CF clear if successful
  27570.     CF set on error (i.e. buffer full)
  27571.         CX = number of keystrokes NOT transferred
  27572.         ES:SI -> first keystroke not transferred
  27573. Note:    this function replaces the identical function AH=25h"K3"
  27574. SeeAlso: AH=25h"K3",AX=AF20h,AX=AF4Dh,AX=AF50h,INT 2F/AX=D44Fh/BX=0001h
  27575. --------K-16AF4DBX4B33-----------------------
  27576. INT 16 - K3PLUS v6.00+ (API v2.0+) - GET VERSION INFORMATION
  27577.     AX = AF4Dh
  27578.     BX = 4B33h ('K3')
  27579. Return: AL = 50h if installed
  27580.         BX = K3 version
  27581.         DX = API version
  27582.         ES:CX -> K3 structure (version-dependent) (see #0532)
  27583. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  27584.       Frinke, originally based on the K3 extended German keyboard driver
  27585.       by Martin Gerdes published in c't magazine in 1988
  27586. SeeAlso: AX=AF20h,AX=AF50h,AX=AF80h,AX=AF82h/BX=4B33h,INT 2F/AX=D44Fh/BX=0000h
  27587. SeeAlso: INT 2F/AX=ED58h
  27588. Index:    installation check;K3PLUS
  27589.  
  27590. Format of internal K3 structure:
  27591. Offset    Size    Description    (Table 0532)
  27592.  00h  3 BYTEs    signature "K3$"
  27593.  03h    BYTE    length of structure, including this byte and signature
  27594.  04h    WORD    compiler switch option flags A (see #0533)
  27595.  06h    WORD    compiler switch option flags B (see #0534)
  27596.  08h    BYTE    internal flags A (see #0535)
  27597.  09h    BYTE    internal flags B (see #0536)
  27598.  0Ah    WORD    DOS version recorded at startup
  27599.  0Ch    WORD    "ActTypeSpeed"
  27600.  0Eh    WORD    last Keyboard-ID sent
  27601.         41ABh translated, 83ABh native (pass-through)
  27602.  10h    WORD    offset of K3TAB Special
  27603.  12h    WORD    offset of K3TAB German
  27604.  14h    WORD    offset of K3TAB Alt
  27605.  16h    WORD    offset of K3TAB AltGr
  27606.  18h    WORD    offset of K3TAB Ctrl
  27607.  1Ah    WORD    offset of K3TAB NPad
  27608.  1Ch    WORD    offset of K3TAB CtrlNPad
  27609.  1Eh    WORD    offset of K3TAB AltNPad
  27610.  20h    WORD    offset of K3TAB ApoTbl or 0000h
  27611.  22h    WORD    offset of K3TAB UmlautTbl or 0000h
  27612.  24h    WORD    offset of K3TAB UmlautTblExp or 0000h
  27613.  26h    WORD    length of video mode table
  27614.  28h    WORD    offset of VidMdTbl or 0000h
  27615.  2Ah    BYTE    '$' end marker
  27616.  
  27617. Bitfields for K3PLUS compiler switch option flags A:
  27618. Bit(s)    Description    (Table 0533)
  27619.  15    GuINT16Fct2 (general use of INT 16 function 2)
  27620.  14    Int15df (INT 15 has to be predefined)
  27621.  13    GuAltNP (general use of Alt Numpad)
  27622.  12    SupAT (ATs+ supported)
  27623.  11    GuINT16Fct3 (general use of INT 16 function 3)
  27624.  10    GuINT16Ret (general use of INT16 bad function return)
  27625.  9-8    Layout (0-2, 3 reserved; 0=PC, 1=AT, 2=MF)
  27626.  7    ForceMF (force MF decode without read-ID)
  27627.  6    KXlate (translate keys for special keyboard)
  27628.  5    UmlautX (umlaut translation capability included)
  27629.  4    ApoX (translate apostrophe)
  27630.  3    DoINT16 (INT 16 handler included)
  27631.  2    UseCC (CopyCursor included)
  27632.  1-0    UseEB
  27633.     0=no extended keystroke buffer, 1=reserve mem, 2=use PSP, 3=reserved
  27634.  
  27635. Bitfields for K3 compiler switch option flags B:
  27636. Bit(s)    Description    (Table 0534)
  27637.  15-11    reserved (0)
  27638.  10    CtrlSeq (Ctrl macro capability included)
  27639.  9-8    SupINT16fct55FE
  27640.  6    DoInstallCheck (check for double installation)
  27641.  5    SupINT16fct5PcJr (INT 16/AH=05h"PCjr" supported)
  27642.  4    SendOut (sound and message output supported)
  27643.  3    SupInt16fct5500 (INT 16/AX=5500h supported)
  27644.  2    GuINT15Fct4F (calls to INT 15/AH=4Fh supported)
  27645.  1-0    UseBufferStart (0=use standard area, 1=set standard area,
  27646.     2=use internal indexes, 3=reserved)
  27647.  
  27648. Bitfields for K3 internal flags A:
  27649. Bit(s)    Description    (Table 0535)
  27650.  7    DoingUmlautExp
  27651.  6    CallINT15fct4F
  27652.  5    Beep1 (requires SendOut set in option flags B)
  27653.  4    ATflag (set for AT, 386, PS/2 Models 50-80)
  27654.  3    XTflag (set for PC, PC/XT, Micromint PC, Pencock PC, PS/2 Model 30)
  27655.  2    KeyClick
  27656.  1    UmlautExp
  27657.  0    UmlautTrans
  27658.  
  27659. Bitfields for K3 internal flags B:
  27660. Bit(s)    Description    (Table 0536)
  27661.  7-5    reserved
  27662.  4    TranslateE0 enabled
  27663.  3    Boot enabled
  27664.  2    PrintScreen enabled
  27665.  1    Break enabled
  27666.  0    ApoPendingBeep
  27667. --------K-16AF50BX4B33-----------------------
  27668. INT 16 - K3PLUS v6.00+ (API v2.0+) - CHECK IF FUNCTION SUPPORTED
  27669.     AX = AF50h
  27670.     BX = 4B33h ('K3')
  27671.     CH = function
  27672.         00h get function flags
  27673.         CL = 00h
  27674.         Return: CX = supported function flags (see #0537)
  27675.         nonzero reserved for extensions
  27676. SeeAlso: AX=AF20h,AX=AF4Dh,AX=AF51h,AX=AF80h
  27677.  
  27678. Bitfields for K3PLUS supported function list:
  27679. Bit(s)    Description    (Table 0537)
  27680.  0    function 4Dh supported
  27681.  1    function 50h supported
  27682.  2-3    reserved (0)
  27683.  4    function 20h supported
  27684.  5    function 25h supported
  27685.  6    function 51h supported
  27686.  7    reserved (0)
  27687.  8    function 80h supported
  27688.  9    function 81h supported
  27689.  10    function 82h supported
  27690.  11-15    reserved (0)
  27691. --------K-16AF51BX4B33-----------------------
  27692. INT 16 - K3PLUS v6.00+ (API v2.00+) - SET OPTIONS
  27693.     AX = AF51h
  27694.     BX = 4B33h ('K3')
  27695.     CX = switches
  27696. Return: AL = status
  27697.         00h done
  27698.         CX = previous switch settings
  27699.         01h switch not supported
  27700.         FFh other error
  27701. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h
  27702. --------K-16AF80BX4B33-----------------------
  27703. INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 09h VECTOR
  27704.     AX = AF80h
  27705.     BX = 4B33h ('K3')
  27706. Return: AL = status
  27707.         00h not supported
  27708.         81h if successful
  27709.         ES:CX -> original INT 09 handler
  27710. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF81h,AX=AF82h
  27711. --------K-16AF81BX4B33-----------------------
  27712. INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 16h HANDLER
  27713.     AX = AF81h
  27714.     BX = 4B33h ('K3')
  27715. Return: AL = status
  27716.         00h not supported
  27717.         82h if successful
  27718.         ES:CX -> original INT 16 handler
  27719. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF82h
  27720. --------K-16AF82BX4B33-----------------------
  27721. INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 10h HANDLER
  27722.     AX = AF82h
  27723.     BX = 4B33h ('K3')
  27724. Return: AL = status
  27725.         00h not supported
  27726.         83h if successful
  27727.         ES:CX -> original INT 10 handler
  27728. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  27729.       Frinke, originally based on the K3 extended German keyboard driver
  27730.       by Martin Gerdes published in c't magazine in 1988
  27731. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF81h,INT 2F/AX=ED58h
  27732. --------m-16B0B1-----------------------------
  27733. INT 16 - VGARAM v1.00 - INSTALLATION CHECK
  27734.     AX = B0B1h
  27735.     ES:DI -> 6 byte signature "VGARAM"
  27736. Return: AX = B1B0h if installed,
  27737.     DS:BX -> VGARAM Status byte: 0 = OFF, 1 = ON
  27738. Program: VGARAM is